{
  "$id": "https://firefox-ci-tc.services.mozilla.com/schemas/object/v1/download-method-geturl.json#",
  "$schema": "https://firefox-ci-tc.services.mozilla.com/schemas/common/metaschema.json#",
  "definitions": {
    "request": {
      "const": true,
      "type": "boolean"
    },
    "response": {
      "additionalProperties": false,
      "description": "This download method returns a URL from which the data may be fetched with an HTTP GET request.\n\nThe client should begin a GET request as soon as possible after receiving the reponse.\nThe server will respond with a 200 OK containing the data, or with a 4xx or 5xx error response.\nIt will _not_ redirect to another URL (3xx), and the client should not follow any such redirects.\n\nThe client can use standard Range requests to download portions of the object or to resume an interrupted download.\nPer the HTTP standard, servers may return more data than requested by the Range header.\n\nIf retrying a failed or interrupted download, and the `expires` field is in the past, the client should call `startDownload` again to get an updated `url`.\nThe client can assume that the object data and `hashes` will be the same for all calls to `startDownload`.\n\nThe client can use standard Accept-Encoding headers to indicate the encodings it can accept.\nHowever, in a deviation from standard HTTP, the client _must_ accept at least `identity` and `gzip` encodings.\nIf the HTTP response has a `Content-Encoding` header, the client should decode the body before verifying its hashes and returning it to the application.\n\nThe client _must_ verify that the resulting data matches the supplied hashes.\nThe object service does not, itself, validate object data and relies on clients to do so.",
      "properties": {
        "expires": {
          "description": "The time after which `url` is no longer valid.\nIf the client wishes to begin an HTTP GET request after this time, it should first call `startDownload` again to get a fresh URL.\n",
          "format": "date-time",
          "title": "Expiration",
          "type": "string"
        },
        "hashes": {
          "$ref": "hashes.json#/definitions/download"
        },
        "method": {
          "const": "getUrl",
          "type": "string"
        },
        "url": {
          "description": "The URL to which the client should make a GET request.\n",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "method",
        "url",
        "expires",
        "hashes"
      ],
      "title": "getUrl Download Response",
      "type": "object"
    }
  },
  "title": "getUrl Download Method"
}