{
  "openapi": "3.1.0",
  "info": {
    "title": "Reported measures and their codes in MyHospitals, Australia query API",
    "version": "2026-10-27",
    "summary": "Filter, page and aggregate Reported measures and their codes in MyHospitals, Australia from Australian Institute of Health and Welfare.",
    "description": "The query API returns only the rows you ask for, as JSON, NDJSON or CSV, from the same typed rows as the files. It needs no key. The API allows 60 requests in 10 seconds from one address. Above that it answers 429 for 10 seconds with a `Retry-After` header, a `RateLimit-Policy` header and a JSON body that gives the limit. Every API answer carries the same `RateLimit-Policy`. A client should wait the `Retry-After` seconds, or read the files, which have no limit. Every JSON answer carries the version, licence and attribution. CSV and NDJSON answers carry them in response headers. Australian Institute of Health and Welfare has not endorsed this site. The whole site is described in https://publicdata.au/openapi.json.",
    "license": {
      "name": "CC BY 4.0",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    }
  },
  "servers": [
    {
      "url": "https://publicdata.au"
    }
  ],
  "externalDocs": {
    "url": "https://publicdata.au/d/au-myhospitals-reported-measures/#query"
  },
  "tags": [
    {
      "name": "query"
    }
  ],
  "paths": {
    "/api/v1/datasets/au-myhospitals-reported-measures/rows": {
      "get": {
        "tags": [
          "query"
        ],
        "summary": "Query Reported measures and their codes in MyHospitals, Australia",
        "operationId": "queryRows_au_myhospitals_reported_measures",
        "description": "Rows of Reported measures and their codes in MyHospitals, Australia in the newest loaded version, filtered and paged. Each filter is `field=operator.value` in the query string, and every filter must match. A number or date field compares as a number or date, and a text field compares as text. Values are case-sensitive, except that `like` and `ilike` ignore case in the ASCII letters A to Z. Prefix `not.` to negate a filter, as `not.eq.value`. Operators: `eq.value`, `neq.value`, `gt.value`, `gte.value`, `lt.value`, `lte.value`, `like.*text*`, `ilike.*text*`, `in.(a,b,c)`, `is.null`.",
        "parameters": [
          {
            "name": "reported_measure_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "reported_measure_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "measure_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.MYH0039"
            ]
          },
          {
            "name": "measure_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.Total national weighted activity units"
            ]
          },
          {
            "name": "units",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: NWAU, bed days, cases, cases per 10,000, code list, days, dollars, minutes, moments, number of separations, patients, percent, relative stay index, stays, surgeries, unit.",
            "examples": [
              "eq.unit"
            ]
          },
          {
            "name": "category_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "category_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "category_type_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: ADMISSION_STATUS, AR-DRG, CANCER_TYPE, CARE_TYPE, ED_TRIAGE, ES_IP, ES_SS, ES_URGENCY, HH_All, NWAU, NWAU_COMPARISON, RSI, SAB_TYPE, SEPARATIONS, SSI.",
            "examples": [
              "eq.SSI"
            ]
          },
          {
            "name": "category_type_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Admission status, All audited moments, Intended procedure, NWAU acute admitted patients, NWAU comparison, Relative stay index, Separations, Specialised service unit, Specialty of surgeon, Surgery or procedure, Triage category, Type of SAB, Type of cancer, Type of care, Urgency categorisation.",
            "examples": [
              "eq.Urgency categorisation"
            ]
          },
          {
            "name": "select",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Fields to return, comma-separated. Every field when absent."
          },
          {
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "`field.asc` or `field.desc`, comma-separated. When absent, rows come in the order of the file they are read from. For the newest versions that is the version's own data.parquet, which keeps the publisher's order unless the dataset sorted it. Any other version is read from the Parquet file the answer names in `file`, and when that file is sorted the answer names its sort in `order`, which ties follow too."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 100
            },
            "description": "Rows per page, 1 to 10,000. 100 when absent."
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "description": "Rows to skip. The `next` URL in each answer sets it for you."
          },
          {
            "name": "format",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "ndjson",
                "csv"
              ],
              "default": "json"
            },
            "description": "`json`, `ndjson` or `csv`. JSON carries the provenance header, and the others carry it in response headers."
          }
        ],
        "responses": {
          "200": {
            "description": "Rows with the version, licence and attribution. `next` is the URL of the following page, or null. An answer read or counted from a Parquet file names it in `file`, or its period parts in `parts`, and a sorted file's sort in `order`."
          },
          "400": {
            "description": "The query names a field the dataset does not have, or a value of the wrong type."
          },
          "404": {
            "description": "The dataset does not exist here, or the version has no table to query."
          },
          "422": {
            "description": "The query would read more of the version's file than one answer may, or the file cannot be read in part. The error gives DuckDB SQL that answers it from the published file."
          },
          "429": {
            "description": "More than 60 requests in 10 seconds from one address. Blocked for 10 seconds. Wait `Retry-After` seconds.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds until the block lifts."
              },
              "RateLimit-Policy": {
                "schema": {
                  "type": "string"
                },
                "description": "The limit, as \"fair-use\";q=60;w=10."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "status": {
                      "type": "integer",
                      "const": 429
                    },
                    "limit": {
                      "type": "integer"
                    },
                    "window_seconds": {
                      "type": "integer"
                    },
                    "block_seconds": {
                      "type": "integer"
                    },
                    "docs": {
                      "type": "string",
                      "format": "uri"
                    },
                    "files": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/datasets/au-myhospitals-reported-measures/versions/{version}/rows": {
      "get": {
        "tags": [
          "query"
        ],
        "summary": "Query Reported measures and their codes in MyHospitals, Australia",
        "operationId": "queryRows_au_myhospitals_reported_measures_version",
        "description": "Rows of Reported measures and their codes in MyHospitals, Australia in one dated version, filtered and paged. Each filter is `field=operator.value` in the query string, and every filter must match. A number or date field compares as a number or date, and a text field compares as text. Values are case-sensitive, except that `like` and `ilike` ignore case in the ASCII letters A to Z. Prefix `not.` to negate a filter, as `not.eq.value`. Operators: `eq.value`, `neq.value`, `gt.value`, `gte.value`, `lt.value`, `lte.value`, `like.*text*`, `ilike.*text*`, `in.(a,b,c)`, `is.null`.",
        "parameters": [
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "A dated version, from the versions path. A dated version's answers stay the same unless a correction rebuilds the version, which its notes record."
          },
          {
            "name": "reported_measure_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "reported_measure_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "measure_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.MYH0039"
            ]
          },
          {
            "name": "measure_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.Total national weighted activity units"
            ]
          },
          {
            "name": "units",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: NWAU, bed days, cases, cases per 10,000, code list, days, dollars, minutes, moments, number of separations, patients, percent, relative stay index, stays, surgeries, unit.",
            "examples": [
              "eq.unit"
            ]
          },
          {
            "name": "category_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "category_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "category_type_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: ADMISSION_STATUS, AR-DRG, CANCER_TYPE, CARE_TYPE, ED_TRIAGE, ES_IP, ES_SS, ES_URGENCY, HH_All, NWAU, NWAU_COMPARISON, RSI, SAB_TYPE, SEPARATIONS, SSI.",
            "examples": [
              "eq.SSI"
            ]
          },
          {
            "name": "category_type_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Admission status, All audited moments, Intended procedure, NWAU acute admitted patients, NWAU comparison, Relative stay index, Separations, Specialised service unit, Specialty of surgeon, Surgery or procedure, Triage category, Type of SAB, Type of cancer, Type of care, Urgency categorisation.",
            "examples": [
              "eq.Urgency categorisation"
            ]
          },
          {
            "name": "select",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Fields to return, comma-separated. Every field when absent."
          },
          {
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "`field.asc` or `field.desc`, comma-separated. When absent, rows come in the order of the file they are read from. For the newest versions that is the version's own data.parquet, which keeps the publisher's order unless the dataset sorted it. Any other version is read from the Parquet file the answer names in `file`, and when that file is sorted the answer names its sort in `order`, which ties follow too."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 100
            },
            "description": "Rows per page, 1 to 10,000. 100 when absent."
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "description": "Rows to skip. The `next` URL in each answer sets it for you."
          },
          {
            "name": "format",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "ndjson",
                "csv"
              ],
              "default": "json"
            },
            "description": "`json`, `ndjson` or `csv`. JSON carries the provenance header, and the others carry it in response headers."
          }
        ],
        "responses": {
          "200": {
            "description": "Rows with the version, licence and attribution. `next` is the URL of the following page, or null. An answer read or counted from a Parquet file names it in `file`, or its period parts in `parts`, and a sorted file's sort in `order`."
          },
          "400": {
            "description": "The query names a field the dataset does not have, or a value of the wrong type."
          },
          "404": {
            "description": "The dataset does not exist here, or the version has no table to query."
          },
          "422": {
            "description": "The query would read more of the version's file than one answer may, or the file cannot be read in part. The error gives DuckDB SQL that answers it from the published file."
          },
          "429": {
            "description": "More than 60 requests in 10 seconds from one address. Blocked for 10 seconds. Wait `Retry-After` seconds.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds until the block lifts."
              },
              "RateLimit-Policy": {
                "schema": {
                  "type": "string"
                },
                "description": "The limit, as \"fair-use\";q=60;w=10."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "status": {
                      "type": "integer",
                      "const": 429
                    },
                    "limit": {
                      "type": "integer"
                    },
                    "window_seconds": {
                      "type": "integer"
                    },
                    "block_seconds": {
                      "type": "integer"
                    },
                    "docs": {
                      "type": "string",
                      "format": "uri"
                    },
                    "files": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/datasets/{slug}/aggregate": {
      "get": {
        "tags": [
          "query"
        ],
        "summary": "Counts, sums, averages, minimums and maximums by group",
        "operationId": "aggregate",
        "description": "Groups and totals of any dataset in the newest loaded version. Filters work as they do on rows. Each filter is `field=operator.value` in the query string, and every filter must match. A number or date field compares as a number or date, and a text field compares as text. Values are case-sensitive, except that `like` and `ilike` ignore case in the ASCII letters A to Z. Prefix `not.` to negate a filter, as `not.eq.value`. Operators: `eq.value`, `neq.value`, `gt.value`, `gte.value`, `lt.value`, `lte.value`, `like.*text*`, `ilike.*text*`, `in.(a,b,c)`, `is.null`.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "au-myhospitals-reported-measures"
              ]
            },
            "description": "The dataset's slug, as in its page URL `/d/<slug>/`."
          },
          {
            "name": "group",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "On `aggregate`, fields to group by, comma-separated."
          },
          {
            "name": "metric",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "count"
            },
            "description": "On `aggregate`, `count`, `sum.field`, `avg.field`, `min.field` or `max.field`, comma-separated. `count` when absent."
          },
          {
            "name": "reported_measure_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "reported_measure_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "measure_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.MYH0039"
            ]
          },
          {
            "name": "measure_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.Total national weighted activity units"
            ]
          },
          {
            "name": "units",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: NWAU, bed days, cases, cases per 10,000, code list, days, dollars, minutes, moments, number of separations, patients, percent, relative stay index, stays, surgeries, unit.",
            "examples": [
              "eq.unit"
            ]
          },
          {
            "name": "category_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "category_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "category_type_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: ADMISSION_STATUS, AR-DRG, CANCER_TYPE, CARE_TYPE, ED_TRIAGE, ES_IP, ES_SS, ES_URGENCY, HH_All, NWAU, NWAU_COMPARISON, RSI, SAB_TYPE, SEPARATIONS, SSI.",
            "examples": [
              "eq.SSI"
            ]
          },
          {
            "name": "category_type_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Admission status, All audited moments, Intended procedure, NWAU acute admitted patients, NWAU comparison, Relative stay index, Separations, Specialised service unit, Specialty of surgeon, Surgery or procedure, Triage category, Type of SAB, Type of cancer, Type of care, Urgency categorisation.",
            "examples": [
              "eq.Urgency categorisation"
            ]
          },
          {
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "`field.asc` or `field.desc`, comma-separated. When absent, rows come in the order of the file they are read from. For the newest versions that is the version's own data.parquet, which keeps the publisher's order unless the dataset sorted it. Any other version is read from the Parquet file the answer names in `file`, and when that file is sorted the answer names its sort in `order`, which ties follow too."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 100
            },
            "description": "Rows per page, 1 to 10,000. 100 when absent."
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "description": "Rows to skip. The `next` URL in each answer sets it for you."
          },
          {
            "name": "format",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "ndjson",
                "csv"
              ],
              "default": "json"
            },
            "description": "`json`, `ndjson` or `csv`. JSON carries the provenance header, and the others carry it in response headers."
          }
        ],
        "responses": {
          "200": {
            "description": "Rows with the version, licence and attribution. `next` is the URL of the following page, or null. An answer read or counted from a Parquet file names it in `file`, or its period parts in `parts`, and a sorted file's sort in `order`."
          },
          "400": {
            "description": "The query names a field the dataset does not have, or a value of the wrong type."
          },
          "404": {
            "description": "The dataset does not exist here, or the version has no table to query."
          },
          "422": {
            "description": "The query would read more of the version's file than one answer may, or the file cannot be read in part. The error gives DuckDB SQL that answers it from the published file."
          },
          "429": {
            "description": "More than 60 requests in 10 seconds from one address. Blocked for 10 seconds. Wait `Retry-After` seconds.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds until the block lifts."
              },
              "RateLimit-Policy": {
                "schema": {
                  "type": "string"
                },
                "description": "The limit, as \"fair-use\";q=60;w=10."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "status": {
                      "type": "integer",
                      "const": 429
                    },
                    "limit": {
                      "type": "integer"
                    },
                    "window_seconds": {
                      "type": "integer"
                    },
                    "block_seconds": {
                      "type": "integer"
                    },
                    "docs": {
                      "type": "string",
                      "format": "uri"
                    },
                    "files": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/datasets/{slug}/versions/{version}/aggregate": {
      "get": {
        "tags": [
          "query"
        ],
        "summary": "Counts, sums, averages, minimums and maximums by group",
        "operationId": "aggregateVersion",
        "description": "Groups and totals of any dataset in one dated version. Filters work as they do on rows. Each filter is `field=operator.value` in the query string, and every filter must match. A number or date field compares as a number or date, and a text field compares as text. Values are case-sensitive, except that `like` and `ilike` ignore case in the ASCII letters A to Z. Prefix `not.` to negate a filter, as `not.eq.value`. Operators: `eq.value`, `neq.value`, `gt.value`, `gte.value`, `lt.value`, `lte.value`, `like.*text*`, `ilike.*text*`, `in.(a,b,c)`, `is.null`.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "au-myhospitals-reported-measures"
              ]
            },
            "description": "The dataset's slug, as in its page URL `/d/<slug>/`."
          },
          {
            "name": "version",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "A dated version, from the versions path. A dated version's answers stay the same unless a correction rebuilds the version, which its notes record."
          },
          {
            "name": "group",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "On `aggregate`, fields to group by, comma-separated."
          },
          {
            "name": "metric",
            "in": "query",
            "schema": {
              "type": "string",
              "default": "count"
            },
            "description": "On `aggregate`, `count`, `sum.field`, `avg.field`, `min.field` or `max.field`, comma-separated. `count` when absent."
          },
          {
            "name": "reported_measure_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "reported_measure_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "measure_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.MYH0039"
            ]
          },
          {
            "name": "measure_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.Total national weighted activity units"
            ]
          },
          {
            "name": "units",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: NWAU, bed days, cases, cases per 10,000, code list, days, dollars, minutes, moments, number of separations, patients, percent, relative stay index, stays, surgeries, unit.",
            "examples": [
              "eq.unit"
            ]
          },
          {
            "name": "category_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "category_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "category_type_code",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: ADMISSION_STATUS, AR-DRG, CANCER_TYPE, CARE_TYPE, ED_TRIAGE, ES_IP, ES_SS, ES_URGENCY, HH_All, NWAU, NWAU_COMPARISON, RSI, SAB_TYPE, SEPARATIONS, SSI.",
            "examples": [
              "eq.SSI"
            ]
          },
          {
            "name": "category_type_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Admission status, All audited moments, Intended procedure, NWAU acute admitted patients, NWAU comparison, Relative stay index, Separations, Specialised service unit, Specialty of surgeon, Surgery or procedure, Triage category, Type of SAB, Type of cancer, Type of care, Urgency categorisation.",
            "examples": [
              "eq.Urgency categorisation"
            ]
          },
          {
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "`field.asc` or `field.desc`, comma-separated. When absent, rows come in the order of the file they are read from. For the newest versions that is the version's own data.parquet, which keeps the publisher's order unless the dataset sorted it. Any other version is read from the Parquet file the answer names in `file`, and when that file is sorted the answer names its sort in `order`, which ties follow too."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "default": 100
            },
            "description": "Rows per page, 1 to 10,000. 100 when absent."
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            },
            "description": "Rows to skip. The `next` URL in each answer sets it for you."
          },
          {
            "name": "format",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "ndjson",
                "csv"
              ],
              "default": "json"
            },
            "description": "`json`, `ndjson` or `csv`. JSON carries the provenance header, and the others carry it in response headers."
          }
        ],
        "responses": {
          "200": {
            "description": "Rows with the version, licence and attribution. `next` is the URL of the following page, or null. An answer read or counted from a Parquet file names it in `file`, or its period parts in `parts`, and a sorted file's sort in `order`."
          },
          "400": {
            "description": "The query names a field the dataset does not have, or a value of the wrong type."
          },
          "404": {
            "description": "The dataset does not exist here, or the version has no table to query."
          },
          "422": {
            "description": "The query would read more of the version's file than one answer may, or the file cannot be read in part. The error gives DuckDB SQL that answers it from the published file."
          },
          "429": {
            "description": "More than 60 requests in 10 seconds from one address. Blocked for 10 seconds. Wait `Retry-After` seconds.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds until the block lifts."
              },
              "RateLimit-Policy": {
                "schema": {
                  "type": "string"
                },
                "description": "The limit, as \"fair-use\";q=60;w=10."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "status": {
                      "type": "integer",
                      "const": 429
                    },
                    "limit": {
                      "type": "integer"
                    },
                    "window_seconds": {
                      "type": "integer"
                    },
                    "block_seconds": {
                      "type": "integer"
                    },
                    "docs": {
                      "type": "string",
                      "format": "uri"
                    },
                    "files": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/datasets/{slug}/versions": {
      "get": {
        "tags": [
          "query"
        ],
        "summary": "The versions of a dataset with a table to query, newest first, with the URLs to query each",
        "operationId": "queryVersions",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "au-myhospitals-reported-measures"
              ]
            },
            "description": "The dataset's slug, as in its page URL `/d/<slug>/`."
          }
        ],
        "responses": {
          "200": {
            "description": "Versions with row counts and URLs."
          },
          "404": {
            "description": "The dataset does not exist here, or the version has no table to query."
          },
          "429": {
            "description": "More than 60 requests in 10 seconds from one address. Blocked for 10 seconds. Wait `Retry-After` seconds.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds until the block lifts."
              },
              "RateLimit-Policy": {
                "schema": {
                  "type": "string"
                },
                "description": "The limit, as \"fair-use\";q=60;w=10."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "status": {
                      "type": "integer",
                      "const": 429
                    },
                    "limit": {
                      "type": "integer"
                    },
                    "window_seconds": {
                      "type": "integer"
                    },
                    "block_seconds": {
                      "type": "integer"
                    },
                    "docs": {
                      "type": "string",
                      "format": "uri"
                    },
                    "files": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
