{
  "$id": "https://firefox-ci-tc.services.mozilla.com/schemas/object/v1/create-upload-request.json#",
  "$schema": "https://firefox-ci-tc.services.mozilla.com/schemas/common/metaschema.json#",
  "additionalProperties": false,
  "description": "A request to begin an upload, containing proposed upload methods to which the\nserver may agree to or reject.\n",
  "properties": {
    "expires": {
      "description": "Date at which this entry expires from the object table.  The expiration cannot\nbe changed in subsequent calls to the same method.\n",
      "format": "date-time",
      "title": "Expiration",
      "type": "string"
    },
    "hashes": {
      "$ref": "hashes.json#/definitions/upload"
    },
    "projectId": {
      "description": "Project identifier.\n",
      "maxLength": 500,
      "minLength": 1,
      "pattern": "^([a-zA-Z0-9._/-]*)$",
      "title": "Project Identifier",
      "type": "string"
    },
    "proposedUploadMethods": {
      "additionalProperties": false,
      "description": "Upload methods, with details, that the caller is prepared to execute.  If\nthis object is empty, then the server will reject the request but still\ncreate the upload with the given `uploadId`, `projectId`, and `expires`,\nso any subsequent calls must share those values.  The server may choose\nany of the proposed methods at its discretion.\n",
      "properties": {
        "dataInline": {
          "$ref": "upload-method-data-inline.json#/definitions/request"
        },
        "putUrl": {
          "$ref": "upload-method-put-url.json#/definitions/request"
        }
      },
      "required": [],
      "title": "Proposed Upload Methods",
      "type": "object"
    },
    "uploadId": {
      "description": "Unique identifier for this upload.   Once an object is created with an uploadId,\nuploads of the same object with different uploadIds will be rejected.  Callers\nshould pass a randomly-generated slugid here.",
      "pattern": "^[A-Za-z0-9_-]{8}[Q-T][A-Za-z0-9_-][CGKOSWaeimquy26-][A-Za-z0-9_-]{10}[AQgw]$",
      "title": "Upload ID",
      "type": "string"
    }
  },
  "required": [
    "projectId",
    "uploadId",
    "expires",
    "proposedUploadMethods"
  ],
  "title": "Create Upload Request",
  "type": "object"
}