{
  "openapi": "3.1.0",
  "info": {
    "title": "Road stopping places on state roads, Western Australia query API",
    "version": "2024-09-20",
    "summary": "Filter, page and aggregate Road stopping places on state roads, Western Australia from Main Roads Western Australia.",
    "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. Main Roads Western Australia 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/wa-road-stopping-places/#query"
  },
  "tags": [
    {
      "name": "query"
    }
  ],
  "paths": {
    "/api/v1/datasets/wa-road-stopping-places/rows": {
      "get": {
        "tags": [
          "query"
        ],
        "summary": "Query Road stopping places on state roads, Western Australia",
        "operationId": "queryRows_wa_road_stopping_places",
        "description": "Rows of Road stopping places on state roads, Western 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": "x",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 113.543396294 to 129.001186663."
          },
          {
            "name": "y",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From -35.029923133 to -15.4992003259999."
          },
          {
            "name": "objectid",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. From 263314 to 264977."
          },
          {
            "name": "globalid",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "road",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.M404"
            ]
          },
          {
            "name": "road_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.York Merredin"
            ]
          },
          {
            "name": "common_usage_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.Yougenup Rd"
            ]
          },
          {
            "name": "start_slk",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3184.9."
          },
          {
            "name": "end_slk",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3184.9."
          },
          {
            "name": "cwy",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Left, Right, Single.",
            "examples": [
              "eq.Single"
            ]
          },
          {
            "name": "start_true_dist",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3185.12."
          },
          {
            "name": "end_true_dist",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3185.12."
          },
          {
            "name": "network_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: State Road.",
            "examples": [
              "eq.State Road"
            ]
          },
          {
            "name": "ra_no",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: 01, 02, 05, 06, 07, 08, 11, 14.",
            "examples": [
              "eq.14"
            ]
          },
          {
            "name": "ra_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Goldfields - Esperance, Great Southern, Kimberley, Metropolitan, Mid West-Gascoyne, Pilbara, South West, Wheatbelt.",
            "examples": [
              "eq.Wheatbelt"
            ]
          },
          {
            "name": "lg_no",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.814"
            ]
          },
          {
            "name": "lg_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.York"
            ]
          },
          {
            "name": "xsp",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Left, Right.",
            "examples": [
              "eq.Right"
            ]
          },
          {
            "name": "rest_area_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Heavy Vehicle Rest Area, Major Rest Area, Minor Rest Area, Roadhouse.",
            "examples": [
              "eq.Roadhouse"
            ]
          },
          {
            "name": "stay_24_hour",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: No, Unknown, Yes.",
            "examples": [
              "eq.Yes"
            ]
          },
          {
            "name": "rest_area_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "ownership",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Main Roads, Other, Shared.",
            "examples": [
              "eq.Shared"
            ]
          },
          {
            "name": "information_board",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "scenic_lookout",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "commemoration_way",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: BBQ, Corporal Ben Roberts-Smith VC MG, Lieutenant Commander George Goss GC, Lieutenant Commander Leon Goldsworthy GC DSC GM, N, Private Arthur Gurney VC, Private Leslie Starcevich VC, Private Percival Gratwick VC, Savannah Way, Warlu Way, Warrant Officer Class two James gordon VC, Y.",
            "examples": [
              "eq.Y"
            ]
          },
          {
            "name": "surface",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Surfaced, Unsurfaced.",
            "examples": [
              "eq.Unsurfaced"
            ]
          },
          {
            "name": "surface_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Asphalt Dense Graded, Asphalt Intersection Mix, Asphalt Open Graded, Asphalt Stone Mastic, Primer Seal, Rubberised Seal, Single Seal, Two Coat Seal.",
            "examples": [
              "eq.Two Coat Seal"
            ]
          },
          {
            "name": "surface_area",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. From 117 to 32000."
          },
          {
            "name": "constructed_shelter",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "natural_shade",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "lighting_present",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Powered Site, Solar Powered Site.",
            "examples": [
              "eq.Solar Powered Site"
            ]
          },
          {
            "name": "number_of_bins",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 31.",
            "examples": [
              "eq.31"
            ]
          },
          {
            "name": "number_of_toilets",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 9.",
            "examples": [
              "eq.9"
            ]
          },
          {
            "name": "accessible_toilets",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "effluent_dump_site",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "number_of_tables",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 25.",
            "examples": [
              "eq.25"
            ]
          },
          {
            "name": "accessible_tables",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "route_ne_id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 247560.0 to 554333127.0.",
            "examples": [
              "eq.554333127.0"
            ]
          },
          {
            "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/wa-road-stopping-places/versions/{version}/rows": {
      "get": {
        "tags": [
          "query"
        ],
        "summary": "Query Road stopping places on state roads, Western Australia",
        "operationId": "queryRows_wa_road_stopping_places_version",
        "description": "Rows of Road stopping places on state roads, Western 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": "x",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 113.543396294 to 129.001186663."
          },
          {
            "name": "y",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From -35.029923133 to -15.4992003259999."
          },
          {
            "name": "objectid",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. From 263314 to 264977."
          },
          {
            "name": "globalid",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "road",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.M404"
            ]
          },
          {
            "name": "road_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.York Merredin"
            ]
          },
          {
            "name": "common_usage_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.Yougenup Rd"
            ]
          },
          {
            "name": "start_slk",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3184.9."
          },
          {
            "name": "end_slk",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3184.9."
          },
          {
            "name": "cwy",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Left, Right, Single.",
            "examples": [
              "eq.Single"
            ]
          },
          {
            "name": "start_true_dist",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3185.12."
          },
          {
            "name": "end_true_dist",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3185.12."
          },
          {
            "name": "network_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: State Road.",
            "examples": [
              "eq.State Road"
            ]
          },
          {
            "name": "ra_no",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: 01, 02, 05, 06, 07, 08, 11, 14.",
            "examples": [
              "eq.14"
            ]
          },
          {
            "name": "ra_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Goldfields - Esperance, Great Southern, Kimberley, Metropolitan, Mid West-Gascoyne, Pilbara, South West, Wheatbelt.",
            "examples": [
              "eq.Wheatbelt"
            ]
          },
          {
            "name": "lg_no",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.814"
            ]
          },
          {
            "name": "lg_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.York"
            ]
          },
          {
            "name": "xsp",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Left, Right.",
            "examples": [
              "eq.Right"
            ]
          },
          {
            "name": "rest_area_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Heavy Vehicle Rest Area, Major Rest Area, Minor Rest Area, Roadhouse.",
            "examples": [
              "eq.Roadhouse"
            ]
          },
          {
            "name": "stay_24_hour",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: No, Unknown, Yes.",
            "examples": [
              "eq.Yes"
            ]
          },
          {
            "name": "rest_area_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "ownership",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Main Roads, Other, Shared.",
            "examples": [
              "eq.Shared"
            ]
          },
          {
            "name": "information_board",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "scenic_lookout",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "commemoration_way",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: BBQ, Corporal Ben Roberts-Smith VC MG, Lieutenant Commander George Goss GC, Lieutenant Commander Leon Goldsworthy GC DSC GM, N, Private Arthur Gurney VC, Private Leslie Starcevich VC, Private Percival Gratwick VC, Savannah Way, Warlu Way, Warrant Officer Class two James gordon VC, Y.",
            "examples": [
              "eq.Y"
            ]
          },
          {
            "name": "surface",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Surfaced, Unsurfaced.",
            "examples": [
              "eq.Unsurfaced"
            ]
          },
          {
            "name": "surface_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Asphalt Dense Graded, Asphalt Intersection Mix, Asphalt Open Graded, Asphalt Stone Mastic, Primer Seal, Rubberised Seal, Single Seal, Two Coat Seal.",
            "examples": [
              "eq.Two Coat Seal"
            ]
          },
          {
            "name": "surface_area",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. From 117 to 32000."
          },
          {
            "name": "constructed_shelter",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "natural_shade",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "lighting_present",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Powered Site, Solar Powered Site.",
            "examples": [
              "eq.Solar Powered Site"
            ]
          },
          {
            "name": "number_of_bins",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 31.",
            "examples": [
              "eq.31"
            ]
          },
          {
            "name": "number_of_toilets",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 9.",
            "examples": [
              "eq.9"
            ]
          },
          {
            "name": "accessible_toilets",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "effluent_dump_site",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "number_of_tables",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 25.",
            "examples": [
              "eq.25"
            ]
          },
          {
            "name": "accessible_tables",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "route_ne_id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 247560.0 to 554333127.0.",
            "examples": [
              "eq.554333127.0"
            ]
          },
          {
            "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": [
                "wa-road-stopping-places"
              ]
            },
            "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": "x",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 113.543396294 to 129.001186663."
          },
          {
            "name": "y",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From -35.029923133 to -15.4992003259999."
          },
          {
            "name": "objectid",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. From 263314 to 264977."
          },
          {
            "name": "globalid",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "road",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.M404"
            ]
          },
          {
            "name": "road_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.York Merredin"
            ]
          },
          {
            "name": "common_usage_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.Yougenup Rd"
            ]
          },
          {
            "name": "start_slk",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3184.9."
          },
          {
            "name": "end_slk",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3184.9."
          },
          {
            "name": "cwy",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Left, Right, Single.",
            "examples": [
              "eq.Single"
            ]
          },
          {
            "name": "start_true_dist",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3185.12."
          },
          {
            "name": "end_true_dist",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3185.12."
          },
          {
            "name": "network_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: State Road.",
            "examples": [
              "eq.State Road"
            ]
          },
          {
            "name": "ra_no",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: 01, 02, 05, 06, 07, 08, 11, 14.",
            "examples": [
              "eq.14"
            ]
          },
          {
            "name": "ra_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Goldfields - Esperance, Great Southern, Kimberley, Metropolitan, Mid West-Gascoyne, Pilbara, South West, Wheatbelt.",
            "examples": [
              "eq.Wheatbelt"
            ]
          },
          {
            "name": "lg_no",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.814"
            ]
          },
          {
            "name": "lg_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.York"
            ]
          },
          {
            "name": "xsp",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Left, Right.",
            "examples": [
              "eq.Right"
            ]
          },
          {
            "name": "rest_area_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Heavy Vehicle Rest Area, Major Rest Area, Minor Rest Area, Roadhouse.",
            "examples": [
              "eq.Roadhouse"
            ]
          },
          {
            "name": "stay_24_hour",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: No, Unknown, Yes.",
            "examples": [
              "eq.Yes"
            ]
          },
          {
            "name": "rest_area_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "ownership",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Main Roads, Other, Shared.",
            "examples": [
              "eq.Shared"
            ]
          },
          {
            "name": "information_board",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "scenic_lookout",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "commemoration_way",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: BBQ, Corporal Ben Roberts-Smith VC MG, Lieutenant Commander George Goss GC, Lieutenant Commander Leon Goldsworthy GC DSC GM, N, Private Arthur Gurney VC, Private Leslie Starcevich VC, Private Percival Gratwick VC, Savannah Way, Warlu Way, Warrant Officer Class two James gordon VC, Y.",
            "examples": [
              "eq.Y"
            ]
          },
          {
            "name": "surface",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Surfaced, Unsurfaced.",
            "examples": [
              "eq.Unsurfaced"
            ]
          },
          {
            "name": "surface_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Asphalt Dense Graded, Asphalt Intersection Mix, Asphalt Open Graded, Asphalt Stone Mastic, Primer Seal, Rubberised Seal, Single Seal, Two Coat Seal.",
            "examples": [
              "eq.Two Coat Seal"
            ]
          },
          {
            "name": "surface_area",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. From 117 to 32000."
          },
          {
            "name": "constructed_shelter",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "natural_shade",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "lighting_present",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Powered Site, Solar Powered Site.",
            "examples": [
              "eq.Solar Powered Site"
            ]
          },
          {
            "name": "number_of_bins",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 31.",
            "examples": [
              "eq.31"
            ]
          },
          {
            "name": "number_of_toilets",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 9.",
            "examples": [
              "eq.9"
            ]
          },
          {
            "name": "accessible_toilets",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "effluent_dump_site",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "number_of_tables",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 25.",
            "examples": [
              "eq.25"
            ]
          },
          {
            "name": "accessible_tables",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "route_ne_id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 247560.0 to 554333127.0.",
            "examples": [
              "eq.554333127.0"
            ]
          },
          {
            "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": [
                "wa-road-stopping-places"
              ]
            },
            "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": "x",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 113.543396294 to 129.001186663."
          },
          {
            "name": "y",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From -35.029923133 to -15.4992003259999."
          },
          {
            "name": "objectid",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. From 263314 to 264977."
          },
          {
            "name": "globalid",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "road",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.M404"
            ]
          },
          {
            "name": "road_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.York Merredin"
            ]
          },
          {
            "name": "common_usage_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.Yougenup Rd"
            ]
          },
          {
            "name": "start_slk",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3184.9."
          },
          {
            "name": "end_slk",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3184.9."
          },
          {
            "name": "cwy",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Left, Right, Single.",
            "examples": [
              "eq.Single"
            ]
          },
          {
            "name": "start_true_dist",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3185.12."
          },
          {
            "name": "end_true_dist",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 0.05 to 3185.12."
          },
          {
            "name": "network_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: State Road.",
            "examples": [
              "eq.State Road"
            ]
          },
          {
            "name": "ra_no",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: 01, 02, 05, 06, 07, 08, 11, 14.",
            "examples": [
              "eq.14"
            ]
          },
          {
            "name": "ra_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Goldfields - Esperance, Great Southern, Kimberley, Metropolitan, Mid West-Gascoyne, Pilbara, South West, Wheatbelt.",
            "examples": [
              "eq.Wheatbelt"
            ]
          },
          {
            "name": "lg_no",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.814"
            ]
          },
          {
            "name": "lg_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string.",
            "examples": [
              "eq.York"
            ]
          },
          {
            "name": "xsp",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Left, Right.",
            "examples": [
              "eq.Right"
            ]
          },
          {
            "name": "rest_area_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Heavy Vehicle Rest Area, Major Rest Area, Minor Rest Area, Roadhouse.",
            "examples": [
              "eq.Roadhouse"
            ]
          },
          {
            "name": "stay_24_hour",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: No, Unknown, Yes.",
            "examples": [
              "eq.Yes"
            ]
          },
          {
            "name": "rest_area_name",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string."
          },
          {
            "name": "ownership",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Main Roads, Other, Shared.",
            "examples": [
              "eq.Shared"
            ]
          },
          {
            "name": "information_board",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "scenic_lookout",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "commemoration_way",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: BBQ, Corporal Ben Roberts-Smith VC MG, Lieutenant Commander George Goss GC, Lieutenant Commander Leon Goldsworthy GC DSC GM, N, Private Arthur Gurney VC, Private Leslie Starcevich VC, Private Percival Gratwick VC, Savannah Way, Warlu Way, Warrant Officer Class two James gordon VC, Y.",
            "examples": [
              "eq.Y"
            ]
          },
          {
            "name": "surface",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Surfaced, Unsurfaced.",
            "examples": [
              "eq.Unsurfaced"
            ]
          },
          {
            "name": "surface_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Asphalt Dense Graded, Asphalt Intersection Mix, Asphalt Open Graded, Asphalt Stone Mastic, Primer Seal, Rubberised Seal, Single Seal, Two Coat Seal.",
            "examples": [
              "eq.Two Coat Seal"
            ]
          },
          {
            "name": "surface_area",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. From 117 to 32000."
          },
          {
            "name": "constructed_shelter",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "natural_shade",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "lighting_present",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "string. Values: Powered Site, Solar Powered Site.",
            "examples": [
              "eq.Solar Powered Site"
            ]
          },
          {
            "name": "number_of_bins",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 31.",
            "examples": [
              "eq.31"
            ]
          },
          {
            "name": "number_of_toilets",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 9.",
            "examples": [
              "eq.9"
            ]
          },
          {
            "name": "accessible_toilets",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "effluent_dump_site",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "number_of_tables",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "integer. Values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 25.",
            "examples": [
              "eq.25"
            ]
          },
          {
            "name": "accessible_tables",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "boolean."
          },
          {
            "name": "route_ne_id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "number. From 247560.0 to 554333127.0.",
            "examples": [
              "eq.554333127.0"
            ]
          },
          {
            "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": [
                "wa-road-stopping-places"
              ]
            },
            "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"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
