<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="walletobjects_v1.html">Google Wallet API</a> . <a href="walletobjects_v1.media.html">media</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#download">download(resourceId, x__xgafv=None)</a></code></p>
<p class="firstline">Downloads rotating barcode values for the transit object referenced by the given object ID.</p>
<p class="toc_element">
  <code><a href="#download_media">download_media(resourceId, x__xgafv=None)</a></code></p>
<p class="firstline">Downloads rotating barcode values for the transit object referenced by the given object ID.</p>
<p class="toc_element">
  <code><a href="#upload">upload(resourceId, body=None, media_body=None, media_mime_type=None, x__xgafv=None)</a></code></p>
<p class="firstline">Uploads rotating barcode values for the transit object referenced by the given object ID. Note the max upload size is specified in google3/production/config/cdd/apps-upload/customers/payments-consumer-passes/config.gcl and enforced by Scotty.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="download">download(resourceId, x__xgafv=None)</code>
  <pre>Downloads rotating barcode values for the transit object referenced by the given object ID.

Args:
  resourceId: string, The unique identifier for an object. This ID must be unique across all objects from an issuer. This value should follow the format issuer ID. identifier where the former is issued by Google and latter is chosen by you. Your unique identifier should only include alphanumeric characters, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A reference to data stored on the filesystem, on GFS or in blobstore.
  &quot;algorithm&quot;: &quot;A String&quot;, # Deprecated, use one of explicit hash type fields instead. Algorithm used for calculating the hash. As of 2011/01/21, &quot;MD5&quot; is the only possible value for this field. New values may be added at any time.
  &quot;bigstoreObjectRef&quot;: &quot;A String&quot;, # Use object_id instead.
  &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
  &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
    &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
    &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
    &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
    &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
    &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
  },
  &quot;compositeMedia&quot;: [ # A composite media composed of one or more media objects, set if reference_type is COMPOSITE_MEDIA. The media length field must be set to the sum of the lengths of all composite media objects. Note: All composite media must have length specified.
    { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites.
      &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
      &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
        &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
        &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
        &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
        &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
        &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
      },
      &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
      &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
      &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
      &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
      &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
      &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
        &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
        &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
        &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
      },
      &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
      &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
      &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
    },
  ],
  &quot;contentType&quot;: &quot;A String&quot;, # MIME type of the data
  &quot;contentTypeInfo&quot;: { # Detailed Content-Type information from Scotty. The Content-Type of the media will typically be filled in by the header or Scotty&#x27;s best_guess, but this extended information provides the backend with more information so that it can make a better decision if needed. This is only used on media upload requests from Scotty. # Extended content type information provided for Scotty uploads.
    &quot;bestGuess&quot;: &quot;A String&quot;, # Scotty&#x27;s best guess of what the content type of the file is.
    &quot;fromBytes&quot;: &quot;A String&quot;, # The content type of the file derived by looking at specific bytes (i.e. &quot;magic bytes&quot;) of the actual file.
    &quot;fromFileName&quot;: &quot;A String&quot;, # The content type of the file derived from the file extension of the original file name used by the client.
    &quot;fromHeader&quot;: &quot;A String&quot;, # The content type of the file as specified in the request headers, multipart headers, or RUPIO start request.
    &quot;fromUrlPath&quot;: &quot;A String&quot;, # The content type of the file derived from the file extension of the URL path. The URL path is assumed to represent a file name (which is typically only true for agents that are providing a REST API).
  },
  &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
  &quot;crc32cHash&quot;: 42, # For Scotty Uploads: Scotty-provided hashes for uploads For Scotty Downloads: (WARNING: DO NOT USE WITHOUT PERMISSION FROM THE SCOTTY TEAM.) A Hash provided by the agent to be used to verify the data being downloaded. Currently only supported for inline payloads. Further, only crc32c_hash is currently supported.
  &quot;diffChecksumsResponse&quot;: { # Backend response for a Diff get checksums response. For details on the Scotty Diff protocol, visit http://go/scotty-diff-protocol. # Set if reference_type is DIFF_CHECKSUMS_RESPONSE.
    &quot;checksumsLocation&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # Exactly one of these fields must be populated. If checksums_location is filled, the server will return the corresponding contents to the user. If object_location is filled, the server will calculate the checksums based on the content there and return that to the user. For details on the format of the checksums, see http://go/scotty-diff-protocol.
      &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
      &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
        &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
        &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
        &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
        &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
        &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
      },
      &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
      &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
      &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
      &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
      &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
      &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
        &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
        &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
        &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
      },
      &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
      &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
      &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
    },
    &quot;chunkSizeBytes&quot;: &quot;A String&quot;, # The chunk size of checksums. Must be a multiple of 256KB.
    &quot;objectLocation&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # If set, calculate the checksums based on the contents and return them to the caller.
      &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
      &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
        &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
        &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
        &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
        &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
        &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
      },
      &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
      &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
      &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
      &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
      &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
      &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
        &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
        &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
        &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
      },
      &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
      &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
      &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
    },
    &quot;objectSizeBytes&quot;: &quot;A String&quot;, # The total size of the server object.
    &quot;objectVersion&quot;: &quot;A String&quot;, # The object version of the object the checksums are being returned for.
  },
  &quot;diffDownloadResponse&quot;: { # Backend response for a Diff download response. For details on the Scotty Diff protocol, visit http://go/scotty-diff-protocol. # Set if reference_type is DIFF_DOWNLOAD_RESPONSE.
    &quot;objectLocation&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # The original object location.
      &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
      &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
        &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
        &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
        &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
        &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
        &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
      },
      &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
      &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
      &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
      &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
      &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
      &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
        &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
        &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
        &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
      },
      &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
      &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
      &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
    },
  },
  &quot;diffUploadRequest&quot;: { # A Diff upload request. For details on the Scotty Diff protocol, visit http://go/scotty-diff-protocol. # Set if reference_type is DIFF_UPLOAD_REQUEST.
    &quot;checksumsInfo&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # The location of the checksums for the new object. Agents must clone the object located here, as the upload server will delete the contents once a response is received. For details on the format of the checksums, see http://go/scotty-diff-protocol.
      &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
      &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
        &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
        &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
        &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
        &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
        &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
      },
      &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
      &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
      &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
      &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
      &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
      &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
        &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
        &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
        &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
      },
      &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
      &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
      &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
    },
    &quot;objectInfo&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # The location of the new object. Agents must clone the object located here, as the upload server will delete the contents once a response is received.
      &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
      &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
        &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
        &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
        &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
        &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
        &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
      },
      &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
      &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
      &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
      &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
      &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
      &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
        &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
        &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
        &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
      },
      &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
      &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
      &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
    },
    &quot;objectVersion&quot;: &quot;A String&quot;, # The object version of the object that is the base version the incoming diff script will be applied to. This field will always be filled in.
  },
  &quot;diffUploadResponse&quot;: { # Backend response for a Diff upload request. For details on the Scotty Diff protocol, visit http://go/scotty-diff-protocol. # Set if reference_type is DIFF_UPLOAD_RESPONSE.
    &quot;objectVersion&quot;: &quot;A String&quot;, # The object version of the object at the server. Must be included in the end notification response. The version in the end notification response must correspond to the new version of the object that is now stored at the server, after the upload.
    &quot;originalObject&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # The location of the original file for a diff upload request. Must be filled in if responding to an upload start notification.
      &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
      &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
        &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
        &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
        &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
        &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
        &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
      },
      &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
      &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
      &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
      &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
      &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
      &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
        &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
        &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
        &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
      },
      &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
      &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
      &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
    },
  },
  &quot;diffVersionResponse&quot;: { # Backend response for a Diff get version response. For details on the Scotty Diff protocol, visit http://go/scotty-diff-protocol. # Set if reference_type is DIFF_VERSION_RESPONSE.
    &quot;objectSizeBytes&quot;: &quot;A String&quot;, # The total size of the server object.
    &quot;objectVersion&quot;: &quot;A String&quot;, # The version of the object stored at the server.
  },
  &quot;downloadParameters&quot;: { # Parameters specific to media downloads. # Parameters for a media download.
    &quot;allowGzipCompression&quot;: True or False, # A boolean to be returned in the response to Scotty. Allows/disallows gzip encoding of the payload content when the server thinks it&#x27;s advantageous (hence, does not guarantee compression) which allows Scotty to GZip the response to the client.
    &quot;ignoreRange&quot;: True or False, # Determining whether or not Apiary should skip the inclusion of any Content-Range header on its response to Scotty.
  },
  &quot;filename&quot;: &quot;A String&quot;, # Original file name
  &quot;hash&quot;: &quot;A String&quot;, # Deprecated, use one of explicit hash type fields instead. These two hash related fields will only be populated on Scotty based media uploads and will contain the content of the hash group in the NotificationRequest: http://cs/#google3/blobstore2/api/scotty/service/proto/upload_listener.proto&amp;q=class:Hash Hex encoded hash value of the uploaded media.
  &quot;hashVerified&quot;: True or False, # For Scotty uploads only. If a user sends a hash code and the backend has requested that Scotty verify the upload against the client hash, Scotty will perform the check on behalf of the backend and will reject it if the hashes don&#x27;t match. This is set to true if Scotty performed this verification.
  &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
  &quot;isPotentialRetry&quot;: True or False, # |is_potential_retry| is set false only when Scotty is certain that it has not sent the request before. When a client resumes an upload, this field must be set true in agent calls, because Scotty cannot be certain that it has never sent the request before due to potential failure in the session state persistence.
  &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
  &quot;md5Hash&quot;: &quot;A String&quot;, # Scotty-provided MD5 hash for an upload.
  &quot;mediaId&quot;: &quot;A String&quot;, # Media id to forward to the operation GetMedia. Can be set if reference_type is GET_MEDIA.
  &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
    &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
    &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
    &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
  },
  &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
  &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
  &quot;sha1Hash&quot;: &quot;A String&quot;, # Scotty-provided SHA1 hash for an upload.
  &quot;sha256Hash&quot;: &quot;A String&quot;, # Scotty-provided SHA256 hash for an upload.
  &quot;timestamp&quot;: &quot;A String&quot;, # Time at which the media data was last updated, in milliseconds since UNIX epoch
  &quot;token&quot;: &quot;A String&quot;, # A unique fingerprint/version id for the media data
}</pre>
</div>

<div class="method">
    <code class="details" id="download_media">download_media(resourceId, x__xgafv=None)</code>
  <pre>Downloads rotating barcode values for the transit object referenced by the given object ID.

Args:
  resourceId: string, The unique identifier for an object. This ID must be unique across all objects from an issuer. This value should follow the format issuer ID. identifier where the former is issued by Google and latter is chosen by you. Your unique identifier should only include alphanumeric characters, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  The media object as a string.

    </pre>
</div>

<div class="method">
    <code class="details" id="upload">upload(resourceId, body=None, media_body=None, media_mime_type=None, x__xgafv=None)</code>
  <pre>Uploads rotating barcode values for the transit object referenced by the given object ID. Note the max upload size is specified in google3/production/config/cdd/apps-upload/customers/payments-consumer-passes/config.gcl and enforced by Scotty.

Args:
  resourceId: string, The unique identifier for an object. This ID must be unique across all objects from an issuer. This value should follow the format issuer ID. identifier where the former is issued by Google and latter is chosen by you. Your unique identifier should only include alphanumeric characters, &#x27;.&#x27;, &#x27;_&#x27;, or &#x27;-&#x27;. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to upload rotating barcode values.
  &quot;blob&quot;: { # A reference to data stored on the filesystem, on GFS or in blobstore. # A reference to the rotating barcode values payload that was uploaded.
    &quot;algorithm&quot;: &quot;A String&quot;, # Deprecated, use one of explicit hash type fields instead. Algorithm used for calculating the hash. As of 2011/01/21, &quot;MD5&quot; is the only possible value for this field. New values may be added at any time.
    &quot;bigstoreObjectRef&quot;: &quot;A String&quot;, # Use object_id instead.
    &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
    &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
      &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
      &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
      &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
      &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
      &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
    },
    &quot;compositeMedia&quot;: [ # A composite media composed of one or more media objects, set if reference_type is COMPOSITE_MEDIA. The media length field must be set to the sum of the lengths of all composite media objects. Note: All composite media must have length specified.
      { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites.
        &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
        &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
          &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
          &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
          &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
          &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
          &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
        },
        &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
        &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
        &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
        &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
        &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
        &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
          &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
          &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
          &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
        },
        &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
        &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
        &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
      },
    ],
    &quot;contentType&quot;: &quot;A String&quot;, # MIME type of the data
    &quot;contentTypeInfo&quot;: { # Detailed Content-Type information from Scotty. The Content-Type of the media will typically be filled in by the header or Scotty&#x27;s best_guess, but this extended information provides the backend with more information so that it can make a better decision if needed. This is only used on media upload requests from Scotty. # Extended content type information provided for Scotty uploads.
      &quot;bestGuess&quot;: &quot;A String&quot;, # Scotty&#x27;s best guess of what the content type of the file is.
      &quot;fromBytes&quot;: &quot;A String&quot;, # The content type of the file derived by looking at specific bytes (i.e. &quot;magic bytes&quot;) of the actual file.
      &quot;fromFileName&quot;: &quot;A String&quot;, # The content type of the file derived from the file extension of the original file name used by the client.
      &quot;fromHeader&quot;: &quot;A String&quot;, # The content type of the file as specified in the request headers, multipart headers, or RUPIO start request.
      &quot;fromUrlPath&quot;: &quot;A String&quot;, # The content type of the file derived from the file extension of the URL path. The URL path is assumed to represent a file name (which is typically only true for agents that are providing a REST API).
    },
    &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
    &quot;crc32cHash&quot;: 42, # For Scotty Uploads: Scotty-provided hashes for uploads For Scotty Downloads: (WARNING: DO NOT USE WITHOUT PERMISSION FROM THE SCOTTY TEAM.) A Hash provided by the agent to be used to verify the data being downloaded. Currently only supported for inline payloads. Further, only crc32c_hash is currently supported.
    &quot;diffChecksumsResponse&quot;: { # Backend response for a Diff get checksums response. For details on the Scotty Diff protocol, visit http://go/scotty-diff-protocol. # Set if reference_type is DIFF_CHECKSUMS_RESPONSE.
      &quot;checksumsLocation&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # Exactly one of these fields must be populated. If checksums_location is filled, the server will return the corresponding contents to the user. If object_location is filled, the server will calculate the checksums based on the content there and return that to the user. For details on the format of the checksums, see http://go/scotty-diff-protocol.
        &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
        &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
          &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
          &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
          &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
          &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
          &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
        },
        &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
        &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
        &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
        &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
        &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
        &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
          &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
          &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
          &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
        },
        &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
        &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
        &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
      },
      &quot;chunkSizeBytes&quot;: &quot;A String&quot;, # The chunk size of checksums. Must be a multiple of 256KB.
      &quot;objectLocation&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # If set, calculate the checksums based on the contents and return them to the caller.
        &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
        &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
          &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
          &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
          &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
          &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
          &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
        },
        &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
        &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
        &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
        &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
        &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
        &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
          &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
          &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
          &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
        },
        &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
        &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
        &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
      },
      &quot;objectSizeBytes&quot;: &quot;A String&quot;, # The total size of the server object.
      &quot;objectVersion&quot;: &quot;A String&quot;, # The object version of the object the checksums are being returned for.
    },
    &quot;diffDownloadResponse&quot;: { # Backend response for a Diff download response. For details on the Scotty Diff protocol, visit http://go/scotty-diff-protocol. # Set if reference_type is DIFF_DOWNLOAD_RESPONSE.
      &quot;objectLocation&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # The original object location.
        &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
        &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
          &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
          &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
          &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
          &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
          &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
        },
        &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
        &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
        &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
        &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
        &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
        &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
          &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
          &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
          &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
        },
        &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
        &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
        &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
      },
    },
    &quot;diffUploadRequest&quot;: { # A Diff upload request. For details on the Scotty Diff protocol, visit http://go/scotty-diff-protocol. # Set if reference_type is DIFF_UPLOAD_REQUEST.
      &quot;checksumsInfo&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # The location of the checksums for the new object. Agents must clone the object located here, as the upload server will delete the contents once a response is received. For details on the format of the checksums, see http://go/scotty-diff-protocol.
        &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
        &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
          &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
          &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
          &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
          &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
          &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
        },
        &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
        &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
        &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
        &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
        &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
        &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
          &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
          &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
          &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
        },
        &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
        &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
        &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
      },
      &quot;objectInfo&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # The location of the new object. Agents must clone the object located here, as the upload server will delete the contents once a response is received.
        &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
        &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
          &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
          &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
          &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
          &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
          &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
        },
        &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
        &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
        &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
        &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
        &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
        &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
          &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
          &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
          &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
        },
        &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
        &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
        &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
      },
      &quot;objectVersion&quot;: &quot;A String&quot;, # The object version of the object that is the base version the incoming diff script will be applied to. This field will always be filled in.
    },
    &quot;diffUploadResponse&quot;: { # Backend response for a Diff upload request. For details on the Scotty Diff protocol, visit http://go/scotty-diff-protocol. # Set if reference_type is DIFF_UPLOAD_RESPONSE.
      &quot;objectVersion&quot;: &quot;A String&quot;, # The object version of the object at the server. Must be included in the end notification response. The version in the end notification response must correspond to the new version of the object that is now stored at the server, after the upload.
      &quot;originalObject&quot;: { # A sequence of media data references representing composite data. Introduced to support Bigstore composite objects. For details, visit http://go/bigstore-composites. # The location of the original file for a diff upload request. Must be filled in if responding to an upload start notification.
        &quot;blobRef&quot;: &quot;A String&quot;, # Blobstore v1 reference, set if reference_type is BLOBSTORE_REF This should be the byte representation of a blobstore.BlobRef. Since Blobstore is deprecating v1, use blobstore2_info instead. For now, any v2 blob will also be represented in this field as v1 BlobRef.
        &quot;blobstore2Info&quot;: { # Information to read/write to blobstore2. # Blobstore v2 info, set if reference_type is BLOBSTORE_REF and it refers to a v2 blob.
          &quot;blobGeneration&quot;: &quot;A String&quot;, # The blob generation id.
          &quot;blobId&quot;: &quot;A String&quot;, # The blob id, e.g., /blobstore/prod/playground/scotty
          &quot;downloadReadHandle&quot;: &quot;A String&quot;, # Read handle passed from Bigstore -&gt; Scotty for a GCS download. This is a signed, serialized blobstore2.ReadHandle proto which must never be set outside of Bigstore, and is not applicable to non-GCS media downloads.
          &quot;readToken&quot;: &quot;A String&quot;, # The blob read token. Needed to read blobs that have not been replicated. Might not be available until the final call.
          &quot;uploadMetadataContainer&quot;: &quot;A String&quot;, # Metadata passed from Blobstore -&gt; Scotty for a new GCS upload. This is a signed, serialized blobstore2.BlobMetadataContainer proto which must never be consumed outside of Bigstore, and is not applicable to non-GCS media uploads.
        },
        &quot;cosmoBinaryReference&quot;: &quot;A String&quot;, # A binary data reference for a media download. Serves as a technology-agnostic binary reference in some Google infrastructure. This value is a serialized storage_cosmo.BinaryReference proto. Storing it as bytes is a hack to get around the fact that the cosmo proto (as well as others it includes) doesn&#x27;t support JavaScript. This prevents us from including the actual type of this field.
        &quot;crc32cHash&quot;: 42, # crc32.c hash for the payload.
        &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
        &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
        &quot;md5Hash&quot;: &quot;A String&quot;, # MD5 hash for the payload.
        &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
          &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
          &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
          &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
        },
        &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
        &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
        &quot;sha1Hash&quot;: &quot;A String&quot;, # SHA-1 hash for the payload.
      },
    },
    &quot;diffVersionResponse&quot;: { # Backend response for a Diff get version response. For details on the Scotty Diff protocol, visit http://go/scotty-diff-protocol. # Set if reference_type is DIFF_VERSION_RESPONSE.
      &quot;objectSizeBytes&quot;: &quot;A String&quot;, # The total size of the server object.
      &quot;objectVersion&quot;: &quot;A String&quot;, # The version of the object stored at the server.
    },
    &quot;downloadParameters&quot;: { # Parameters specific to media downloads. # Parameters for a media download.
      &quot;allowGzipCompression&quot;: True or False, # A boolean to be returned in the response to Scotty. Allows/disallows gzip encoding of the payload content when the server thinks it&#x27;s advantageous (hence, does not guarantee compression) which allows Scotty to GZip the response to the client.
      &quot;ignoreRange&quot;: True or False, # Determining whether or not Apiary should skip the inclusion of any Content-Range header on its response to Scotty.
    },
    &quot;filename&quot;: &quot;A String&quot;, # Original file name
    &quot;hash&quot;: &quot;A String&quot;, # Deprecated, use one of explicit hash type fields instead. These two hash related fields will only be populated on Scotty based media uploads and will contain the content of the hash group in the NotificationRequest: http://cs/#google3/blobstore2/api/scotty/service/proto/upload_listener.proto&amp;q=class:Hash Hex encoded hash value of the uploaded media.
    &quot;hashVerified&quot;: True or False, # For Scotty uploads only. If a user sends a hash code and the backend has requested that Scotty verify the upload against the client hash, Scotty will perform the check on behalf of the backend and will reject it if the hashes don&#x27;t match. This is set to true if Scotty performed this verification.
    &quot;inline&quot;: &quot;A String&quot;, # Media data, set if reference_type is INLINE
    &quot;isPotentialRetry&quot;: True or False, # |is_potential_retry| is set false only when Scotty is certain that it has not sent the request before. When a client resumes an upload, this field must be set true in agent calls, because Scotty cannot be certain that it has never sent the request before due to potential failure in the session state persistence.
    &quot;length&quot;: &quot;A String&quot;, # Size of the data, in bytes
    &quot;md5Hash&quot;: &quot;A String&quot;, # Scotty-provided MD5 hash for an upload.
    &quot;mediaId&quot;: &quot;A String&quot;, # Media id to forward to the operation GetMedia. Can be set if reference_type is GET_MEDIA.
    &quot;objectId&quot;: { # This is a copy of the tech.blob.ObjectId proto, which could not be used directly here due to transitive closure issues with JavaScript support; see http://b/8801763. # Reference to a TI Blob, set if reference_type is BIGSTORE_REF.
      &quot;bucketName&quot;: &quot;A String&quot;, # The name of the bucket to which this object belongs.
      &quot;generation&quot;: &quot;A String&quot;, # Generation of the object. Generations are monotonically increasing across writes, allowing them to be be compared to determine which generation is newer. If this is omitted in a request, then you are requesting the live object. See http://go/bigstore-versions
      &quot;objectName&quot;: &quot;A String&quot;, # The name of the object.
    },
    &quot;path&quot;: &quot;A String&quot;, # Path to the data, set if reference_type is PATH
    &quot;referenceType&quot;: &quot;A String&quot;, # Describes what the field reference contains.
    &quot;sha1Hash&quot;: &quot;A String&quot;, # Scotty-provided SHA1 hash for an upload.
    &quot;sha256Hash&quot;: &quot;A String&quot;, # Scotty-provided SHA256 hash for an upload.
    &quot;timestamp&quot;: &quot;A String&quot;, # Time at which the media data was last updated, in milliseconds since UNIX epoch
    &quot;token&quot;: &quot;A String&quot;, # A unique fingerprint/version id for the media data
  },
  &quot;mediaRequestInfo&quot;: { # Extra information added to operations that support Scotty media requests. # Extra information about the uploaded media.
    &quot;currentBytes&quot;: &quot;A String&quot;, # The number of current bytes uploaded or downloaded.
    &quot;customData&quot;: &quot;A String&quot;, # Data to be copied to backend requests. Custom data is returned to Scotty in the agent_state field, which Scotty will then provide in subsequent upload notifications.
    &quot;diffObjectVersion&quot;: &quot;A String&quot;, # Set if the http request info is diff encoded. The value of this field is the version number of the base revision. This is corresponding to Apiary&#x27;s mediaDiffObjectVersion (//depot/google3/java/com/google/api/server/media/variable/DiffObjectVersionVariable.java). See go/esf-scotty-diff-upload for more information.
    &quot;finalStatus&quot;: 42, # The existence of the final_status field indicates that this is the last call to the agent for this request_id. http://google3/uploader/agent/scotty_agent.proto?l=737&amp;rcl=347601929
    &quot;notificationType&quot;: &quot;A String&quot;, # The type of notification received from Scotty.
    &quot;physicalHeaders&quot;: &quot;A String&quot;, # The physical headers provided by RequestReceivedParameters in Scotty request. type is uploader_service.KeyValuePairs.
    &quot;requestId&quot;: &quot;A String&quot;, # The Scotty request ID.
    &quot;requestReceivedParamsServingInfo&quot;: &quot;A String&quot;, # The partition of the Scotty server handling this request. type is uploader_service.RequestReceivedParamsServingInfo LINT.IfChange(request_received_params_serving_info_annotations) LINT.ThenChange()
    &quot;totalBytes&quot;: &quot;A String&quot;, # The total size of the file.
    &quot;totalBytesIsEstimated&quot;: True or False, # Whether the total bytes field contains an estimated data.
  },
}

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for uploading rotating barcode values.
}</pre>
</div>

</body></html>