<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="cloudsearch_v1.html">Cloud Search API</a> . <a href="cloudsearch_v1.indexing.html">indexing</a> . <a href="cloudsearch_v1.indexing.datasources.html">datasources</a> . <a href="cloudsearch_v1.indexing.datasources.items.html">items</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="#delete">delete(name, connectorName=None, debugOptions_enableDebugging=None, mode=None, version=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes Item resource for the specified resource name. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.</p>
<p class="toc_element">
  <code><a href="#deleteQueueItems">deleteQueueItems(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes all items in a queue. This method is useful for deleting stale items. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.</p>
<p class="toc_element">
  <code><a href="#get">get(name, connectorName=None, debugOptions_enableDebugging=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets Item resource by item name. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.</p>
<p class="toc_element">
  <code><a href="#index">index(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates Item ACL, metadata, and content. It will insert the Item if it does not exist. This method does not support partial updates. Fields with no provided values are cleared out in the Cloud Search index. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.</p>
<p class="toc_element">
  <code><a href="#list">list(name, brief=None, connectorName=None, debugOptions_enableDebugging=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all or a subset of Item resources. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#poll">poll(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Polls for unreserved items from the indexing queue and marks a set as reserved, starting with items that have the oldest timestamp from the highest priority ItemStatus. The priority order is as follows: ERROR MODIFIED NEW_ITEM ACCEPTED Reserving items ensures that polling from other threads cannot create overlapping sets. After handling the reserved items, the client should put items back into the unreserved state, either by calling index, or by calling push with the type REQUEUE. Items automatically become available (unreserved) after 4 hours even if no update or push method is called. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.</p>
<p class="toc_element">
  <code><a href="#push">push(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Pushes an item onto a queue for later polling and updating. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.</p>
<p class="toc_element">
  <code><a href="#unreserve">unreserve(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Unreserves all items from a queue, making them all eligible to be polled. This method is useful for resetting the indexing queue after a connector has been restarted. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.</p>
<p class="toc_element">
  <code><a href="#upload">upload(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates an upload session for uploading item content. For items smaller than 100 KB, it's easier to embed the content inline within an index request. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.</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="delete">delete(name, connectorName=None, debugOptions_enableDebugging=None, mode=None, version=None, x__xgafv=None)</code>
  <pre>Deletes Item resource for the specified resource name. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.

Args:
  name: string, Required. Name of the item to delete. Format: datasources/{source_id}/items/{item_id} (required)
  connectorName: string, Name of connector making this call. Format: datasources/{source_id}/connectors/{ID}
  debugOptions_enableDebugging: boolean, If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  mode: string, Required. The RequestMode for this request.
    Allowed values
      UNSPECIFIED - Priority is not specified in the update request. Leaving priority unspecified results in an update failure.
      SYNCHRONOUS - For real-time updates.
      ASYNCHRONOUS - For changes that are executed after the response is sent back to the caller.
  version: string, Required. The incremented version of the item to delete from the index. The indexing system stores the version from the datasource as a byte string and compares the Item version in the index to the version of the queued Item using lexical ordering. Cloud Search Indexing won&#x27;t delete any queued item with a version value that is less than or equal to the version of the currently indexed item. The maximum length for this field is 1024 bytes. See [this guide](https://developers.devsite.corp.google.com/cloud-search/docs/guides/operations) to understand how item version affects reindexing after delete item.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="deleteQueueItems">deleteQueueItems(name, body=None, x__xgafv=None)</code>
  <pre>Deletes all items in a queue. This method is useful for deleting stale items. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.

Args:
  name: string, Name of the Data Source to delete items in a queue. Format: datasources/{source_id} (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;connectorName&quot;: &quot;A String&quot;, # Name of connector making this call. Format: datasources/{source_id}/connectors/{ID}
  &quot;debugOptions&quot;: { # Shared request debug options for all cloudsearch RPC methods. # Common debug options.
    &quot;enableDebugging&quot;: True or False, # If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  },
  &quot;queue&quot;: &quot;A String&quot;, # Name of a queue to delete items from.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, connectorName=None, debugOptions_enableDebugging=None, x__xgafv=None)</code>
  <pre>Gets Item resource by item name. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.

Args:
  name: string, Name of the item to get info. Format: datasources/{source_id}/items/{item_id} (required)
  connectorName: string, Name of connector making this call. Format: datasources/{source_id}/connectors/{ID}
  debugOptions_enableDebugging: boolean, If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a single object that is an item in the search index, such as a file, folder, or a database record.
  &quot;acl&quot;: { # Access control list information for the item. For more information see [Map ACLs](/cloud-search/docs/guides/acls). # Access control list for this item.
    &quot;aclInheritanceType&quot;: &quot;A String&quot;, # Sets the type of access rules to apply when an item inherits its ACL from a parent. This should always be set in tandem with the inheritAclFrom field. Also, when the inheritAclFrom field is set, this field should be set to a valid AclInheritanceType.
    &quot;deniedReaders&quot;: [ # List of principals who are explicitly denied access to the item in search results. While principals are denied access by default, use denied readers to handle exceptions and override the list allowed readers. The maximum number of elements is 100.
      { # Reference to a user, group, or domain.
        &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
        &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
          &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
          &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
          &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
        },
        &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
      },
    ],
    &quot;inheritAclFrom&quot;: &quot;A String&quot;, # Name of the item to inherit the Access Permission List (ACL) from. Note: ACL inheritance *only* provides access permissions to child items and does not define structural relationships, nor does it provide convenient ways to delete large groups of items. Deleting an ACL parent from the index only alters the access permissions of child items that reference the parent in the inheritAclFrom field. The item is still in the index, but may not visible in search results. By contrast, deletion of a container item also deletes all items that reference the container via the containerName field. The maximum length for this field is 1536 characters.
    &quot;owners&quot;: [ # Optional. List of owners for the item. This field has no bearing on document access permissions. It does, however, offer a slight ranking boosts items where the querying user is an owner. The maximum number of elements is 5.
      { # Reference to a user, group, or domain.
        &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
        &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
          &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
          &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
          &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
        },
        &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
      },
    ],
    &quot;readers&quot;: [ # List of principals who are allowed to see the item in search results. Optional if inheriting permissions from another item or if the item is not intended to be visible, such as virtual containers. The maximum number of elements is 1000.
      { # Reference to a user, group, or domain.
        &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
        &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
          &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
          &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
          &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
        },
        &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
      },
    ],
  },
  &quot;content&quot;: { # Content of an item to be indexed and surfaced by Cloud Search. Only UTF-8 encoded strings are allowed as inlineContent. If the content is uploaded and not binary, it must be UTF-8 encoded. # Item content to be indexed and made text searchable.
    &quot;contentDataRef&quot;: { # Represents an upload session reference. This reference is created via upload method. Updating of item content may refer to this uploaded content via contentDataRef. # Upload reference ID of a previously uploaded content via write method.
      &quot;name&quot;: &quot;A String&quot;, # Name of the content reference. The maximum length is 2048 characters.
    },
    &quot;contentFormat&quot;: &quot;A String&quot;,
    &quot;hash&quot;: &quot;A String&quot;, # Hashing info calculated and provided by the API client for content. Can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
    &quot;inlineContent&quot;: &quot;A String&quot;, # Content that is supplied inlined within the update method. The maximum length is 102400 bytes (100 KiB).
  },
  &quot;itemType&quot;: &quot;A String&quot;, # Type for this item.
  &quot;metadata&quot;: { # Available metadata fields for the item. # Metadata information.
    &quot;containerName&quot;: &quot;A String&quot;, # The name of the container for this item. Deletion of the container item leads to automatic deletion of this item. Note: ACLs are not inherited from a container item. To provide ACL inheritance for an item, use the inheritAclFrom field. The maximum length is 1536 characters.
    &quot;contentLanguage&quot;: &quot;A String&quot;, # The BCP-47 language code for the item, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. The maximum length is 32 characters.
    &quot;contextAttributes&quot;: [ # A set of named attributes associated with the item. This can be used for influencing the ranking of the item based on the context in the request. The maximum number of elements is 10.
      { # A named attribute associated with an item which can be used for influencing the ranking of the item based on the context in the request.
        &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. It should not be empty. The maximum length is 32 characters. The name must start with a letter and can only contain letters (A-Z, a-z) or numbers (0-9). The name will be normalized (lower-cased) before being matched.
        &quot;values&quot;: [ # Text values of the attribute. The maximum number of elements is 10. The maximum length of an element in the array is 32 characters. The value will be normalized (lower-cased) before being matched.
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;createTime&quot;: &quot;A String&quot;, # The time when the item was created in the source repository.
    &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
    &quot;interactions&quot;: [ # A list of interactions for the item. Interactions are used to improve Search quality, but are not exposed to end users. The maximum number of elements is 1000.
      { # Represents an interaction between a user and an item.
        &quot;interactionTime&quot;: &quot;A String&quot;, # The time when the user acted on the item. If multiple actions of the same type exist for a single user, only the most recent action is recorded.
        &quot;principal&quot;: { # Reference to a user, group, or domain. # The user that acted on the item.
          &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
          &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
            &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
            &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
            &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
          },
          &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
        },
        &quot;type&quot;: &quot;A String&quot;,
      },
    ],
    &quot;keywords&quot;: [ # Additional keywords or phrases that should match the item. Used internally for user generated content. The maximum number of elements is 100. The maximum length is 8192 characters.
      &quot;A String&quot;,
    ],
    &quot;mimeType&quot;: &quot;A String&quot;, # The original mime-type of ItemContent.content in the source repository. The maximum length is 256 characters.
    &quot;objectType&quot;: &quot;A String&quot;, # The type of the item. This should correspond to the name of an object definition in the schema registered for the data source. For example, if the schema for the data source contains an object definition with name &#x27;document&#x27;, then item indexing requests for objects of that type should set objectType to &#x27;document&#x27;. The maximum length is 256 characters.
    &quot;searchQualityMetadata&quot;: { # Additional search quality metadata of the item. # Additional search quality metadata of the item
      &quot;quality&quot;: 3.14, # An indication of the quality of the item, used to influence search quality. Value should be between 0.0 (lowest quality) and 1.0 (highest quality). The default value is 0.0.
    },
    &quot;sourceRepositoryUrl&quot;: &quot;A String&quot;, # Link to the source repository serving the data. Search results apply this link to the title. Whitespace or special characters may cause Cloud Search result links to trigger a redirect notice; to avoid this, encode the URL. The maximum length is 2048 characters.
    &quot;title&quot;: &quot;A String&quot;, # The title of the item. If given, this will be the displayed title of the Search result. The maximum length is 2048 characters.
    &quot;updateTime&quot;: &quot;A String&quot;, # The time when the item was last modified in the source repository.
  },
  &quot;name&quot;: &quot;A String&quot;, # Name of the Item. Format: datasources/{source_id}/items/{item_id} This is a required field. The maximum length is 1536 characters.
  &quot;payload&quot;: &quot;A String&quot;, # Additional state connector can store for this item. The maximum length is 10000 bytes.
  &quot;queue&quot;: &quot;A String&quot;, # Queue this item belongs to. The maximum length is 100 characters.
  &quot;status&quot;: { # This contains item&#x27;s status and any errors. # Status of the item. Output only field.
    &quot;code&quot;: &quot;A String&quot;, # Status code.
    &quot;processingErrors&quot;: [ # Error details in case the item is in ERROR state.
      {
        &quot;code&quot;: &quot;A String&quot;, # Error code indicating the nature of the error.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Description of the error.
        &quot;fieldViolations&quot;: [ # In case the item fields are invalid, this field contains the details about the validation errors.
          {
            &quot;description&quot;: &quot;A String&quot;, # Description of the error.
            &quot;field&quot;: &quot;A String&quot;, # Path of field with violation.
          },
        ],
      },
    ],
    &quot;repositoryErrors&quot;: [ # Repository error reported by connector.
      { # Errors when the connector is communicating to the source repository.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Message that describes the error. The maximum allowable length of the message is 8192 characters.
        &quot;httpStatusCode&quot;: 42, # Error codes. Matches the definition of HTTP status codes.
        &quot;type&quot;: &quot;A String&quot;, # Type of error.
      },
    ],
  },
  &quot;structuredData&quot;: { # Available structured data fields for the item. # The structured data for the item that should conform to a registered object definition in the schema for the data source.
    &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
    &quot;object&quot;: { # A structured data object consisting of named properties. # The structured data object that should conform to a registered object definition in the schema for the data source.
      &quot;properties&quot;: [ # The properties for the object. The maximum number of elements is 1000.
        { # A typed name-value pair for structured data. The type of the value should be the same as the registered type for the `name` property in the object definition of `objectType`.
          &quot;booleanValue&quot;: True or False,
          &quot;dateValues&quot;: { # List of date values.
            &quot;values&quot;: [
              { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
              },
            ],
          },
          &quot;doubleValues&quot;: { # List of double values.
            &quot;values&quot;: [
              3.14,
            ],
          },
          &quot;enumValues&quot;: { # List of enum values.
            &quot;values&quot;: [ # The maximum allowable length for string values is 32 characters.
              &quot;A String&quot;,
            ],
          },
          &quot;htmlValues&quot;: { # List of html values.
            &quot;values&quot;: [ # The maximum allowable length for html values is 2048 characters.
              &quot;A String&quot;,
            ],
          },
          &quot;integerValues&quot;: { # List of integer values.
            &quot;values&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;name&quot;: &quot;A String&quot;, # The name of the property. This name should correspond to the name of the property that was registered for object definition in the schema. The maximum allowable length for this property is 256 characters.
          &quot;objectValues&quot;: { # List of object values.
            &quot;values&quot;: [
              # Object with schema name: StructuredDataObject
            ],
          },
          &quot;textValues&quot;: { # List of text values.
            &quot;values&quot;: [ # The maximum allowable length for text values is 2048 characters.
              &quot;A String&quot;,
            ],
          },
          &quot;timestampValues&quot;: { # List of timestamp values.
            &quot;values&quot;: [
              &quot;A String&quot;,
            ],
          },
        },
      ],
    },
  },
  &quot;version&quot;: &quot;A String&quot;, # Required. The indexing system stores the version from the datasource as a byte string and compares the Item version in the index to the version of the queued Item using lexical ordering. Cloud Search Indexing won&#x27;t index or delete any queued item with a version value that is less than or equal to the version of the currently indexed item. The maximum length for this field is 1024 bytes. See [this guide](https://developers.devsite.corp.google.com/cloud-search/docs/guides/operations) to understand how item version affects reindexing after delete item.
}</pre>
</div>

<div class="method">
    <code class="details" id="index">index(name, body=None, x__xgafv=None)</code>
  <pre>Updates Item ACL, metadata, and content. It will insert the Item if it does not exist. This method does not support partial updates. Fields with no provided values are cleared out in the Cloud Search index. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.

Args:
  name: string, Name of the Item. Format: datasources/{source_id}/items/{item_id} This is a required field. The maximum length is 1536 characters. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;connectorName&quot;: &quot;A String&quot;, # Name of connector making this call. Format: datasources/{source_id}/connectors/{ID}
  &quot;debugOptions&quot;: { # Shared request debug options for all cloudsearch RPC methods. # Common debug options.
    &quot;enableDebugging&quot;: True or False, # If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  },
  &quot;indexItemOptions&quot;: {
    &quot;allowUnknownGsuitePrincipals&quot;: True or False, # Specifies if the index request should allow gsuite principals that do not exist or are deleted in the index request.
  },
  &quot;item&quot;: { # Represents a single object that is an item in the search index, such as a file, folder, or a database record. # Name of the item. Format: datasources/{source_id}/items/{item_id}
    &quot;acl&quot;: { # Access control list information for the item. For more information see [Map ACLs](/cloud-search/docs/guides/acls). # Access control list for this item.
      &quot;aclInheritanceType&quot;: &quot;A String&quot;, # Sets the type of access rules to apply when an item inherits its ACL from a parent. This should always be set in tandem with the inheritAclFrom field. Also, when the inheritAclFrom field is set, this field should be set to a valid AclInheritanceType.
      &quot;deniedReaders&quot;: [ # List of principals who are explicitly denied access to the item in search results. While principals are denied access by default, use denied readers to handle exceptions and override the list allowed readers. The maximum number of elements is 100.
        { # Reference to a user, group, or domain.
          &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
          &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
            &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
            &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
            &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
          },
          &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
        },
      ],
      &quot;inheritAclFrom&quot;: &quot;A String&quot;, # Name of the item to inherit the Access Permission List (ACL) from. Note: ACL inheritance *only* provides access permissions to child items and does not define structural relationships, nor does it provide convenient ways to delete large groups of items. Deleting an ACL parent from the index only alters the access permissions of child items that reference the parent in the inheritAclFrom field. The item is still in the index, but may not visible in search results. By contrast, deletion of a container item also deletes all items that reference the container via the containerName field. The maximum length for this field is 1536 characters.
      &quot;owners&quot;: [ # Optional. List of owners for the item. This field has no bearing on document access permissions. It does, however, offer a slight ranking boosts items where the querying user is an owner. The maximum number of elements is 5.
        { # Reference to a user, group, or domain.
          &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
          &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
            &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
            &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
            &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
          },
          &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
        },
      ],
      &quot;readers&quot;: [ # List of principals who are allowed to see the item in search results. Optional if inheriting permissions from another item or if the item is not intended to be visible, such as virtual containers. The maximum number of elements is 1000.
        { # Reference to a user, group, or domain.
          &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
          &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
            &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
            &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
            &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
          },
          &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
        },
      ],
    },
    &quot;content&quot;: { # Content of an item to be indexed and surfaced by Cloud Search. Only UTF-8 encoded strings are allowed as inlineContent. If the content is uploaded and not binary, it must be UTF-8 encoded. # Item content to be indexed and made text searchable.
      &quot;contentDataRef&quot;: { # Represents an upload session reference. This reference is created via upload method. Updating of item content may refer to this uploaded content via contentDataRef. # Upload reference ID of a previously uploaded content via write method.
        &quot;name&quot;: &quot;A String&quot;, # Name of the content reference. The maximum length is 2048 characters.
      },
      &quot;contentFormat&quot;: &quot;A String&quot;,
      &quot;hash&quot;: &quot;A String&quot;, # Hashing info calculated and provided by the API client for content. Can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
      &quot;inlineContent&quot;: &quot;A String&quot;, # Content that is supplied inlined within the update method. The maximum length is 102400 bytes (100 KiB).
    },
    &quot;itemType&quot;: &quot;A String&quot;, # Type for this item.
    &quot;metadata&quot;: { # Available metadata fields for the item. # Metadata information.
      &quot;containerName&quot;: &quot;A String&quot;, # The name of the container for this item. Deletion of the container item leads to automatic deletion of this item. Note: ACLs are not inherited from a container item. To provide ACL inheritance for an item, use the inheritAclFrom field. The maximum length is 1536 characters.
      &quot;contentLanguage&quot;: &quot;A String&quot;, # The BCP-47 language code for the item, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. The maximum length is 32 characters.
      &quot;contextAttributes&quot;: [ # A set of named attributes associated with the item. This can be used for influencing the ranking of the item based on the context in the request. The maximum number of elements is 10.
        { # A named attribute associated with an item which can be used for influencing the ranking of the item based on the context in the request.
          &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. It should not be empty. The maximum length is 32 characters. The name must start with a letter and can only contain letters (A-Z, a-z) or numbers (0-9). The name will be normalized (lower-cased) before being matched.
          &quot;values&quot;: [ # Text values of the attribute. The maximum number of elements is 10. The maximum length of an element in the array is 32 characters. The value will be normalized (lower-cased) before being matched.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # The time when the item was created in the source repository.
      &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
      &quot;interactions&quot;: [ # A list of interactions for the item. Interactions are used to improve Search quality, but are not exposed to end users. The maximum number of elements is 1000.
        { # Represents an interaction between a user and an item.
          &quot;interactionTime&quot;: &quot;A String&quot;, # The time when the user acted on the item. If multiple actions of the same type exist for a single user, only the most recent action is recorded.
          &quot;principal&quot;: { # Reference to a user, group, or domain. # The user that acted on the item.
            &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
            &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
              &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
              &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
              &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
            },
            &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
          },
          &quot;type&quot;: &quot;A String&quot;,
        },
      ],
      &quot;keywords&quot;: [ # Additional keywords or phrases that should match the item. Used internally for user generated content. The maximum number of elements is 100. The maximum length is 8192 characters.
        &quot;A String&quot;,
      ],
      &quot;mimeType&quot;: &quot;A String&quot;, # The original mime-type of ItemContent.content in the source repository. The maximum length is 256 characters.
      &quot;objectType&quot;: &quot;A String&quot;, # The type of the item. This should correspond to the name of an object definition in the schema registered for the data source. For example, if the schema for the data source contains an object definition with name &#x27;document&#x27;, then item indexing requests for objects of that type should set objectType to &#x27;document&#x27;. The maximum length is 256 characters.
      &quot;searchQualityMetadata&quot;: { # Additional search quality metadata of the item. # Additional search quality metadata of the item
        &quot;quality&quot;: 3.14, # An indication of the quality of the item, used to influence search quality. Value should be between 0.0 (lowest quality) and 1.0 (highest quality). The default value is 0.0.
      },
      &quot;sourceRepositoryUrl&quot;: &quot;A String&quot;, # Link to the source repository serving the data. Search results apply this link to the title. Whitespace or special characters may cause Cloud Search result links to trigger a redirect notice; to avoid this, encode the URL. The maximum length is 2048 characters.
      &quot;title&quot;: &quot;A String&quot;, # The title of the item. If given, this will be the displayed title of the Search result. The maximum length is 2048 characters.
      &quot;updateTime&quot;: &quot;A String&quot;, # The time when the item was last modified in the source repository.
    },
    &quot;name&quot;: &quot;A String&quot;, # Name of the Item. Format: datasources/{source_id}/items/{item_id} This is a required field. The maximum length is 1536 characters.
    &quot;payload&quot;: &quot;A String&quot;, # Additional state connector can store for this item. The maximum length is 10000 bytes.
    &quot;queue&quot;: &quot;A String&quot;, # Queue this item belongs to. The maximum length is 100 characters.
    &quot;status&quot;: { # This contains item&#x27;s status and any errors. # Status of the item. Output only field.
      &quot;code&quot;: &quot;A String&quot;, # Status code.
      &quot;processingErrors&quot;: [ # Error details in case the item is in ERROR state.
        {
          &quot;code&quot;: &quot;A String&quot;, # Error code indicating the nature of the error.
          &quot;errorMessage&quot;: &quot;A String&quot;, # Description of the error.
          &quot;fieldViolations&quot;: [ # In case the item fields are invalid, this field contains the details about the validation errors.
            {
              &quot;description&quot;: &quot;A String&quot;, # Description of the error.
              &quot;field&quot;: &quot;A String&quot;, # Path of field with violation.
            },
          ],
        },
      ],
      &quot;repositoryErrors&quot;: [ # Repository error reported by connector.
        { # Errors when the connector is communicating to the source repository.
          &quot;errorMessage&quot;: &quot;A String&quot;, # Message that describes the error. The maximum allowable length of the message is 8192 characters.
          &quot;httpStatusCode&quot;: 42, # Error codes. Matches the definition of HTTP status codes.
          &quot;type&quot;: &quot;A String&quot;, # Type of error.
        },
      ],
    },
    &quot;structuredData&quot;: { # Available structured data fields for the item. # The structured data for the item that should conform to a registered object definition in the schema for the data source.
      &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
      &quot;object&quot;: { # A structured data object consisting of named properties. # The structured data object that should conform to a registered object definition in the schema for the data source.
        &quot;properties&quot;: [ # The properties for the object. The maximum number of elements is 1000.
          { # A typed name-value pair for structured data. The type of the value should be the same as the registered type for the `name` property in the object definition of `objectType`.
            &quot;booleanValue&quot;: True or False,
            &quot;dateValues&quot;: { # List of date values.
              &quot;values&quot;: [
                { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                  &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                  &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                  &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                },
              ],
            },
            &quot;doubleValues&quot;: { # List of double values.
              &quot;values&quot;: [
                3.14,
              ],
            },
            &quot;enumValues&quot;: { # List of enum values.
              &quot;values&quot;: [ # The maximum allowable length for string values is 32 characters.
                &quot;A String&quot;,
              ],
            },
            &quot;htmlValues&quot;: { # List of html values.
              &quot;values&quot;: [ # The maximum allowable length for html values is 2048 characters.
                &quot;A String&quot;,
              ],
            },
            &quot;integerValues&quot;: { # List of integer values.
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;name&quot;: &quot;A String&quot;, # The name of the property. This name should correspond to the name of the property that was registered for object definition in the schema. The maximum allowable length for this property is 256 characters.
            &quot;objectValues&quot;: { # List of object values.
              &quot;values&quot;: [
                # Object with schema name: StructuredDataObject
              ],
            },
            &quot;textValues&quot;: { # List of text values.
              &quot;values&quot;: [ # The maximum allowable length for text values is 2048 characters.
                &quot;A String&quot;,
              ],
            },
            &quot;timestampValues&quot;: { # List of timestamp values.
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
          },
        ],
      },
    },
    &quot;version&quot;: &quot;A String&quot;, # Required. The indexing system stores the version from the datasource as a byte string and compares the Item version in the index to the version of the queued Item using lexical ordering. Cloud Search Indexing won&#x27;t index or delete any queued item with a version value that is less than or equal to the version of the currently indexed item. The maximum length for this field is 1024 bytes. See [this guide](https://developers.devsite.corp.google.com/cloud-search/docs/guides/operations) to understand how item version affects reindexing after delete item.
  },
  &quot;mode&quot;: &quot;A String&quot;, # Required. The RequestMode for this request.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(name, brief=None, connectorName=None, debugOptions_enableDebugging=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all or a subset of Item resources. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.

Args:
  name: string, Name of the Data Source to list Items. Format: datasources/{source_id} (required)
  brief: boolean, When set to true, the indexing system only populates the following fields: name, version, queue. metadata.hash, metadata.title, metadata.sourceRepositoryURL, metadata.objectType, metadata.createTime, metadata.updateTime, metadata.contentLanguage, metadata.mimeType, structured_data.hash, content.hash, itemType, itemStatus.code, itemStatus.processingError.code, itemStatus.repositoryError.type, If this value is false, then all the fields are populated in Item.
  connectorName: string, Name of connector making this call. Format: datasources/{source_id}/connectors/{ID}
  debugOptions_enableDebugging: boolean, If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  pageSize: integer, Maximum number of items to fetch in a request. The max value is 1000 when brief is true. The max value is 10 if brief is false. The default value is 10
  pageToken: string, The next_page_token value returned from a previous List request, if any.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;items&quot;: [
    { # Represents a single object that is an item in the search index, such as a file, folder, or a database record.
      &quot;acl&quot;: { # Access control list information for the item. For more information see [Map ACLs](/cloud-search/docs/guides/acls). # Access control list for this item.
        &quot;aclInheritanceType&quot;: &quot;A String&quot;, # Sets the type of access rules to apply when an item inherits its ACL from a parent. This should always be set in tandem with the inheritAclFrom field. Also, when the inheritAclFrom field is set, this field should be set to a valid AclInheritanceType.
        &quot;deniedReaders&quot;: [ # List of principals who are explicitly denied access to the item in search results. While principals are denied access by default, use denied readers to handle exceptions and override the list allowed readers. The maximum number of elements is 100.
          { # Reference to a user, group, or domain.
            &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
            &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
              &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
              &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
              &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
            },
            &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
          },
        ],
        &quot;inheritAclFrom&quot;: &quot;A String&quot;, # Name of the item to inherit the Access Permission List (ACL) from. Note: ACL inheritance *only* provides access permissions to child items and does not define structural relationships, nor does it provide convenient ways to delete large groups of items. Deleting an ACL parent from the index only alters the access permissions of child items that reference the parent in the inheritAclFrom field. The item is still in the index, but may not visible in search results. By contrast, deletion of a container item also deletes all items that reference the container via the containerName field. The maximum length for this field is 1536 characters.
        &quot;owners&quot;: [ # Optional. List of owners for the item. This field has no bearing on document access permissions. It does, however, offer a slight ranking boosts items where the querying user is an owner. The maximum number of elements is 5.
          { # Reference to a user, group, or domain.
            &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
            &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
              &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
              &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
              &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
            },
            &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
          },
        ],
        &quot;readers&quot;: [ # List of principals who are allowed to see the item in search results. Optional if inheriting permissions from another item or if the item is not intended to be visible, such as virtual containers. The maximum number of elements is 1000.
          { # Reference to a user, group, or domain.
            &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
            &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
              &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
              &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
              &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
            },
            &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
          },
        ],
      },
      &quot;content&quot;: { # Content of an item to be indexed and surfaced by Cloud Search. Only UTF-8 encoded strings are allowed as inlineContent. If the content is uploaded and not binary, it must be UTF-8 encoded. # Item content to be indexed and made text searchable.
        &quot;contentDataRef&quot;: { # Represents an upload session reference. This reference is created via upload method. Updating of item content may refer to this uploaded content via contentDataRef. # Upload reference ID of a previously uploaded content via write method.
          &quot;name&quot;: &quot;A String&quot;, # Name of the content reference. The maximum length is 2048 characters.
        },
        &quot;contentFormat&quot;: &quot;A String&quot;,
        &quot;hash&quot;: &quot;A String&quot;, # Hashing info calculated and provided by the API client for content. Can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
        &quot;inlineContent&quot;: &quot;A String&quot;, # Content that is supplied inlined within the update method. The maximum length is 102400 bytes (100 KiB).
      },
      &quot;itemType&quot;: &quot;A String&quot;, # Type for this item.
      &quot;metadata&quot;: { # Available metadata fields for the item. # Metadata information.
        &quot;containerName&quot;: &quot;A String&quot;, # The name of the container for this item. Deletion of the container item leads to automatic deletion of this item. Note: ACLs are not inherited from a container item. To provide ACL inheritance for an item, use the inheritAclFrom field. The maximum length is 1536 characters.
        &quot;contentLanguage&quot;: &quot;A String&quot;, # The BCP-47 language code for the item, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. The maximum length is 32 characters.
        &quot;contextAttributes&quot;: [ # A set of named attributes associated with the item. This can be used for influencing the ranking of the item based on the context in the request. The maximum number of elements is 10.
          { # A named attribute associated with an item which can be used for influencing the ranking of the item based on the context in the request.
            &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. It should not be empty. The maximum length is 32 characters. The name must start with a letter and can only contain letters (A-Z, a-z) or numbers (0-9). The name will be normalized (lower-cased) before being matched.
            &quot;values&quot;: [ # Text values of the attribute. The maximum number of elements is 10. The maximum length of an element in the array is 32 characters. The value will be normalized (lower-cased) before being matched.
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;createTime&quot;: &quot;A String&quot;, # The time when the item was created in the source repository.
        &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
        &quot;interactions&quot;: [ # A list of interactions for the item. Interactions are used to improve Search quality, but are not exposed to end users. The maximum number of elements is 1000.
          { # Represents an interaction between a user and an item.
            &quot;interactionTime&quot;: &quot;A String&quot;, # The time when the user acted on the item. If multiple actions of the same type exist for a single user, only the most recent action is recorded.
            &quot;principal&quot;: { # Reference to a user, group, or domain. # The user that acted on the item.
              &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
              &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
                &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
                &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
              },
              &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
            },
            &quot;type&quot;: &quot;A String&quot;,
          },
        ],
        &quot;keywords&quot;: [ # Additional keywords or phrases that should match the item. Used internally for user generated content. The maximum number of elements is 100. The maximum length is 8192 characters.
          &quot;A String&quot;,
        ],
        &quot;mimeType&quot;: &quot;A String&quot;, # The original mime-type of ItemContent.content in the source repository. The maximum length is 256 characters.
        &quot;objectType&quot;: &quot;A String&quot;, # The type of the item. This should correspond to the name of an object definition in the schema registered for the data source. For example, if the schema for the data source contains an object definition with name &#x27;document&#x27;, then item indexing requests for objects of that type should set objectType to &#x27;document&#x27;. The maximum length is 256 characters.
        &quot;searchQualityMetadata&quot;: { # Additional search quality metadata of the item. # Additional search quality metadata of the item
          &quot;quality&quot;: 3.14, # An indication of the quality of the item, used to influence search quality. Value should be between 0.0 (lowest quality) and 1.0 (highest quality). The default value is 0.0.
        },
        &quot;sourceRepositoryUrl&quot;: &quot;A String&quot;, # Link to the source repository serving the data. Search results apply this link to the title. Whitespace or special characters may cause Cloud Search result links to trigger a redirect notice; to avoid this, encode the URL. The maximum length is 2048 characters.
        &quot;title&quot;: &quot;A String&quot;, # The title of the item. If given, this will be the displayed title of the Search result. The maximum length is 2048 characters.
        &quot;updateTime&quot;: &quot;A String&quot;, # The time when the item was last modified in the source repository.
      },
      &quot;name&quot;: &quot;A String&quot;, # Name of the Item. Format: datasources/{source_id}/items/{item_id} This is a required field. The maximum length is 1536 characters.
      &quot;payload&quot;: &quot;A String&quot;, # Additional state connector can store for this item. The maximum length is 10000 bytes.
      &quot;queue&quot;: &quot;A String&quot;, # Queue this item belongs to. The maximum length is 100 characters.
      &quot;status&quot;: { # This contains item&#x27;s status and any errors. # Status of the item. Output only field.
        &quot;code&quot;: &quot;A String&quot;, # Status code.
        &quot;processingErrors&quot;: [ # Error details in case the item is in ERROR state.
          {
            &quot;code&quot;: &quot;A String&quot;, # Error code indicating the nature of the error.
            &quot;errorMessage&quot;: &quot;A String&quot;, # Description of the error.
            &quot;fieldViolations&quot;: [ # In case the item fields are invalid, this field contains the details about the validation errors.
              {
                &quot;description&quot;: &quot;A String&quot;, # Description of the error.
                &quot;field&quot;: &quot;A String&quot;, # Path of field with violation.
              },
            ],
          },
        ],
        &quot;repositoryErrors&quot;: [ # Repository error reported by connector.
          { # Errors when the connector is communicating to the source repository.
            &quot;errorMessage&quot;: &quot;A String&quot;, # Message that describes the error. The maximum allowable length of the message is 8192 characters.
            &quot;httpStatusCode&quot;: 42, # Error codes. Matches the definition of HTTP status codes.
            &quot;type&quot;: &quot;A String&quot;, # Type of error.
          },
        ],
      },
      &quot;structuredData&quot;: { # Available structured data fields for the item. # The structured data for the item that should conform to a registered object definition in the schema for the data source.
        &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
        &quot;object&quot;: { # A structured data object consisting of named properties. # The structured data object that should conform to a registered object definition in the schema for the data source.
          &quot;properties&quot;: [ # The properties for the object. The maximum number of elements is 1000.
            { # A typed name-value pair for structured data. The type of the value should be the same as the registered type for the `name` property in the object definition of `objectType`.
              &quot;booleanValue&quot;: True or False,
              &quot;dateValues&quot;: { # List of date values.
                &quot;values&quot;: [
                  { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                    &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                    &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                    &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                  },
                ],
              },
              &quot;doubleValues&quot;: { # List of double values.
                &quot;values&quot;: [
                  3.14,
                ],
              },
              &quot;enumValues&quot;: { # List of enum values.
                &quot;values&quot;: [ # The maximum allowable length for string values is 32 characters.
                  &quot;A String&quot;,
                ],
              },
              &quot;htmlValues&quot;: { # List of html values.
                &quot;values&quot;: [ # The maximum allowable length for html values is 2048 characters.
                  &quot;A String&quot;,
                ],
              },
              &quot;integerValues&quot;: { # List of integer values.
                &quot;values&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;name&quot;: &quot;A String&quot;, # The name of the property. This name should correspond to the name of the property that was registered for object definition in the schema. The maximum allowable length for this property is 256 characters.
              &quot;objectValues&quot;: { # List of object values.
                &quot;values&quot;: [
                  # Object with schema name: StructuredDataObject
                ],
              },
              &quot;textValues&quot;: { # List of text values.
                &quot;values&quot;: [ # The maximum allowable length for text values is 2048 characters.
                  &quot;A String&quot;,
                ],
              },
              &quot;timestampValues&quot;: { # List of timestamp values.
                &quot;values&quot;: [
                  &quot;A String&quot;,
                ],
              },
            },
          ],
        },
      },
      &quot;version&quot;: &quot;A String&quot;, # Required. The indexing system stores the version from the datasource as a byte string and compares the Item version in the index to the version of the queued Item using lexical ordering. Cloud Search Indexing won&#x27;t index or delete any queued item with a version value that is less than or equal to the version of the currently indexed item. The maximum length for this field is 1024 bytes. See [this guide](https://developers.devsite.corp.google.com/cloud-search/docs/guides/operations) to understand how item version affects reindexing after delete item.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="poll">poll(name, body=None, x__xgafv=None)</code>
  <pre>Polls for unreserved items from the indexing queue and marks a set as reserved, starting with items that have the oldest timestamp from the highest priority ItemStatus. The priority order is as follows: ERROR MODIFIED NEW_ITEM ACCEPTED Reserving items ensures that polling from other threads cannot create overlapping sets. After handling the reserved items, the client should put items back into the unreserved state, either by calling index, or by calling push with the type REQUEUE. Items automatically become available (unreserved) after 4 hours even if no update or push method is called. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.

Args:
  name: string, Name of the Data Source to poll items. Format: datasources/{source_id} (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;connectorName&quot;: &quot;A String&quot;, # Name of connector making this call. Format: datasources/{source_id}/connectors/{ID}
  &quot;debugOptions&quot;: { # Shared request debug options for all cloudsearch RPC methods. # Common debug options.
    &quot;enableDebugging&quot;: True or False, # If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  },
  &quot;limit&quot;: 42, # Maximum number of items to return. The maximum value is 100 and the default value is 20.
  &quot;queue&quot;: &quot;A String&quot;, # Queue name to fetch items from. If unspecified, PollItems will fetch from &#x27;default&#x27; queue. The maximum length is 100 characters.
  &quot;statusCodes&quot;: [ # Limit the items polled to the ones with these statuses.
    &quot;A String&quot;,
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;items&quot;: [ # Set of items from the queue available for connector to process. These items have the following subset of fields populated: version metadata.hash structured_data.hash content.hash payload status queue
    { # Represents a single object that is an item in the search index, such as a file, folder, or a database record.
      &quot;acl&quot;: { # Access control list information for the item. For more information see [Map ACLs](/cloud-search/docs/guides/acls). # Access control list for this item.
        &quot;aclInheritanceType&quot;: &quot;A String&quot;, # Sets the type of access rules to apply when an item inherits its ACL from a parent. This should always be set in tandem with the inheritAclFrom field. Also, when the inheritAclFrom field is set, this field should be set to a valid AclInheritanceType.
        &quot;deniedReaders&quot;: [ # List of principals who are explicitly denied access to the item in search results. While principals are denied access by default, use denied readers to handle exceptions and override the list allowed readers. The maximum number of elements is 100.
          { # Reference to a user, group, or domain.
            &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
            &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
              &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
              &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
              &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
            },
            &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
          },
        ],
        &quot;inheritAclFrom&quot;: &quot;A String&quot;, # Name of the item to inherit the Access Permission List (ACL) from. Note: ACL inheritance *only* provides access permissions to child items and does not define structural relationships, nor does it provide convenient ways to delete large groups of items. Deleting an ACL parent from the index only alters the access permissions of child items that reference the parent in the inheritAclFrom field. The item is still in the index, but may not visible in search results. By contrast, deletion of a container item also deletes all items that reference the container via the containerName field. The maximum length for this field is 1536 characters.
        &quot;owners&quot;: [ # Optional. List of owners for the item. This field has no bearing on document access permissions. It does, however, offer a slight ranking boosts items where the querying user is an owner. The maximum number of elements is 5.
          { # Reference to a user, group, or domain.
            &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
            &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
              &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
              &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
              &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
            },
            &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
          },
        ],
        &quot;readers&quot;: [ # List of principals who are allowed to see the item in search results. Optional if inheriting permissions from another item or if the item is not intended to be visible, such as virtual containers. The maximum number of elements is 1000.
          { # Reference to a user, group, or domain.
            &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
            &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
              &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
              &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
              &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
            },
            &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
          },
        ],
      },
      &quot;content&quot;: { # Content of an item to be indexed and surfaced by Cloud Search. Only UTF-8 encoded strings are allowed as inlineContent. If the content is uploaded and not binary, it must be UTF-8 encoded. # Item content to be indexed and made text searchable.
        &quot;contentDataRef&quot;: { # Represents an upload session reference. This reference is created via upload method. Updating of item content may refer to this uploaded content via contentDataRef. # Upload reference ID of a previously uploaded content via write method.
          &quot;name&quot;: &quot;A String&quot;, # Name of the content reference. The maximum length is 2048 characters.
        },
        &quot;contentFormat&quot;: &quot;A String&quot;,
        &quot;hash&quot;: &quot;A String&quot;, # Hashing info calculated and provided by the API client for content. Can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
        &quot;inlineContent&quot;: &quot;A String&quot;, # Content that is supplied inlined within the update method. The maximum length is 102400 bytes (100 KiB).
      },
      &quot;itemType&quot;: &quot;A String&quot;, # Type for this item.
      &quot;metadata&quot;: { # Available metadata fields for the item. # Metadata information.
        &quot;containerName&quot;: &quot;A String&quot;, # The name of the container for this item. Deletion of the container item leads to automatic deletion of this item. Note: ACLs are not inherited from a container item. To provide ACL inheritance for an item, use the inheritAclFrom field. The maximum length is 1536 characters.
        &quot;contentLanguage&quot;: &quot;A String&quot;, # The BCP-47 language code for the item, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. The maximum length is 32 characters.
        &quot;contextAttributes&quot;: [ # A set of named attributes associated with the item. This can be used for influencing the ranking of the item based on the context in the request. The maximum number of elements is 10.
          { # A named attribute associated with an item which can be used for influencing the ranking of the item based on the context in the request.
            &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. It should not be empty. The maximum length is 32 characters. The name must start with a letter and can only contain letters (A-Z, a-z) or numbers (0-9). The name will be normalized (lower-cased) before being matched.
            &quot;values&quot;: [ # Text values of the attribute. The maximum number of elements is 10. The maximum length of an element in the array is 32 characters. The value will be normalized (lower-cased) before being matched.
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;createTime&quot;: &quot;A String&quot;, # The time when the item was created in the source repository.
        &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
        &quot;interactions&quot;: [ # A list of interactions for the item. Interactions are used to improve Search quality, but are not exposed to end users. The maximum number of elements is 1000.
          { # Represents an interaction between a user and an item.
            &quot;interactionTime&quot;: &quot;A String&quot;, # The time when the user acted on the item. If multiple actions of the same type exist for a single user, only the most recent action is recorded.
            &quot;principal&quot;: { # Reference to a user, group, or domain. # The user that acted on the item.
              &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
              &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
                &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
                &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
              },
              &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
            },
            &quot;type&quot;: &quot;A String&quot;,
          },
        ],
        &quot;keywords&quot;: [ # Additional keywords or phrases that should match the item. Used internally for user generated content. The maximum number of elements is 100. The maximum length is 8192 characters.
          &quot;A String&quot;,
        ],
        &quot;mimeType&quot;: &quot;A String&quot;, # The original mime-type of ItemContent.content in the source repository. The maximum length is 256 characters.
        &quot;objectType&quot;: &quot;A String&quot;, # The type of the item. This should correspond to the name of an object definition in the schema registered for the data source. For example, if the schema for the data source contains an object definition with name &#x27;document&#x27;, then item indexing requests for objects of that type should set objectType to &#x27;document&#x27;. The maximum length is 256 characters.
        &quot;searchQualityMetadata&quot;: { # Additional search quality metadata of the item. # Additional search quality metadata of the item
          &quot;quality&quot;: 3.14, # An indication of the quality of the item, used to influence search quality. Value should be between 0.0 (lowest quality) and 1.0 (highest quality). The default value is 0.0.
        },
        &quot;sourceRepositoryUrl&quot;: &quot;A String&quot;, # Link to the source repository serving the data. Search results apply this link to the title. Whitespace or special characters may cause Cloud Search result links to trigger a redirect notice; to avoid this, encode the URL. The maximum length is 2048 characters.
        &quot;title&quot;: &quot;A String&quot;, # The title of the item. If given, this will be the displayed title of the Search result. The maximum length is 2048 characters.
        &quot;updateTime&quot;: &quot;A String&quot;, # The time when the item was last modified in the source repository.
      },
      &quot;name&quot;: &quot;A String&quot;, # Name of the Item. Format: datasources/{source_id}/items/{item_id} This is a required field. The maximum length is 1536 characters.
      &quot;payload&quot;: &quot;A String&quot;, # Additional state connector can store for this item. The maximum length is 10000 bytes.
      &quot;queue&quot;: &quot;A String&quot;, # Queue this item belongs to. The maximum length is 100 characters.
      &quot;status&quot;: { # This contains item&#x27;s status and any errors. # Status of the item. Output only field.
        &quot;code&quot;: &quot;A String&quot;, # Status code.
        &quot;processingErrors&quot;: [ # Error details in case the item is in ERROR state.
          {
            &quot;code&quot;: &quot;A String&quot;, # Error code indicating the nature of the error.
            &quot;errorMessage&quot;: &quot;A String&quot;, # Description of the error.
            &quot;fieldViolations&quot;: [ # In case the item fields are invalid, this field contains the details about the validation errors.
              {
                &quot;description&quot;: &quot;A String&quot;, # Description of the error.
                &quot;field&quot;: &quot;A String&quot;, # Path of field with violation.
              },
            ],
          },
        ],
        &quot;repositoryErrors&quot;: [ # Repository error reported by connector.
          { # Errors when the connector is communicating to the source repository.
            &quot;errorMessage&quot;: &quot;A String&quot;, # Message that describes the error. The maximum allowable length of the message is 8192 characters.
            &quot;httpStatusCode&quot;: 42, # Error codes. Matches the definition of HTTP status codes.
            &quot;type&quot;: &quot;A String&quot;, # Type of error.
          },
        ],
      },
      &quot;structuredData&quot;: { # Available structured data fields for the item. # The structured data for the item that should conform to a registered object definition in the schema for the data source.
        &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
        &quot;object&quot;: { # A structured data object consisting of named properties. # The structured data object that should conform to a registered object definition in the schema for the data source.
          &quot;properties&quot;: [ # The properties for the object. The maximum number of elements is 1000.
            { # A typed name-value pair for structured data. The type of the value should be the same as the registered type for the `name` property in the object definition of `objectType`.
              &quot;booleanValue&quot;: True or False,
              &quot;dateValues&quot;: { # List of date values.
                &quot;values&quot;: [
                  { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                    &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                    &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                    &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                  },
                ],
              },
              &quot;doubleValues&quot;: { # List of double values.
                &quot;values&quot;: [
                  3.14,
                ],
              },
              &quot;enumValues&quot;: { # List of enum values.
                &quot;values&quot;: [ # The maximum allowable length for string values is 32 characters.
                  &quot;A String&quot;,
                ],
              },
              &quot;htmlValues&quot;: { # List of html values.
                &quot;values&quot;: [ # The maximum allowable length for html values is 2048 characters.
                  &quot;A String&quot;,
                ],
              },
              &quot;integerValues&quot;: { # List of integer values.
                &quot;values&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;name&quot;: &quot;A String&quot;, # The name of the property. This name should correspond to the name of the property that was registered for object definition in the schema. The maximum allowable length for this property is 256 characters.
              &quot;objectValues&quot;: { # List of object values.
                &quot;values&quot;: [
                  # Object with schema name: StructuredDataObject
                ],
              },
              &quot;textValues&quot;: { # List of text values.
                &quot;values&quot;: [ # The maximum allowable length for text values is 2048 characters.
                  &quot;A String&quot;,
                ],
              },
              &quot;timestampValues&quot;: { # List of timestamp values.
                &quot;values&quot;: [
                  &quot;A String&quot;,
                ],
              },
            },
          ],
        },
      },
      &quot;version&quot;: &quot;A String&quot;, # Required. The indexing system stores the version from the datasource as a byte string and compares the Item version in the index to the version of the queued Item using lexical ordering. Cloud Search Indexing won&#x27;t index or delete any queued item with a version value that is less than or equal to the version of the currently indexed item. The maximum length for this field is 1024 bytes. See [this guide](https://developers.devsite.corp.google.com/cloud-search/docs/guides/operations) to understand how item version affects reindexing after delete item.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="push">push(name, body=None, x__xgafv=None)</code>
  <pre>Pushes an item onto a queue for later polling and updating. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.

Args:
  name: string, Name of the item to push into the indexing queue. Format: datasources/{source_id}/items/{ID} This is a required field. The maximum length is 1536 characters. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;connectorName&quot;: &quot;A String&quot;, # Name of connector making this call. Format: datasources/{source_id}/connectors/{ID}
  &quot;debugOptions&quot;: { # Shared request debug options for all cloudsearch RPC methods. # Common debug options.
    &quot;enableDebugging&quot;: True or False, # If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  },
  &quot;item&quot;: { # Represents an item to be pushed to the indexing queue. # Item to push onto the queue.
    &quot;contentHash&quot;: &quot;A String&quot;, # Content hash of the item according to the repository. If specified, this is used to determine how to modify this item&#x27;s status. Setting this field and the type field results in argument error. The maximum length is 2048 characters.
    &quot;metadataHash&quot;: &quot;A String&quot;, # Metadata hash of the item according to the repository. If specified, this is used to determine how to modify this item&#x27;s status. Setting this field and the type field results in argument error. The maximum length is 2048 characters.
    &quot;payload&quot;: &quot;A String&quot;, # Provides additional document state information for the connector, such as an alternate repository ID and other metadata. The maximum length is 8192 bytes.
    &quot;queue&quot;: &quot;A String&quot;, # Queue to which this item belongs to. The default queue is chosen if this field is not specified. The maximum length is 512 characters.
    &quot;repositoryError&quot;: { # Errors when the connector is communicating to the source repository. # Populate this field to store Connector or repository error details. This information is displayed in the Admin Console. This field may only be populated when the Type is REPOSITORY_ERROR.
      &quot;errorMessage&quot;: &quot;A String&quot;, # Message that describes the error. The maximum allowable length of the message is 8192 characters.
      &quot;httpStatusCode&quot;: 42, # Error codes. Matches the definition of HTTP status codes.
      &quot;type&quot;: &quot;A String&quot;, # Type of error.
    },
    &quot;structuredDataHash&quot;: &quot;A String&quot;, # Structured data hash of the item according to the repository. If specified, this is used to determine how to modify this item&#x27;s status. Setting this field and the type field results in argument error. The maximum length is 2048 characters.
    &quot;type&quot;: &quot;A String&quot;, # The type of the push operation that defines the push behavior.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a single object that is an item in the search index, such as a file, folder, or a database record.
  &quot;acl&quot;: { # Access control list information for the item. For more information see [Map ACLs](/cloud-search/docs/guides/acls). # Access control list for this item.
    &quot;aclInheritanceType&quot;: &quot;A String&quot;, # Sets the type of access rules to apply when an item inherits its ACL from a parent. This should always be set in tandem with the inheritAclFrom field. Also, when the inheritAclFrom field is set, this field should be set to a valid AclInheritanceType.
    &quot;deniedReaders&quot;: [ # List of principals who are explicitly denied access to the item in search results. While principals are denied access by default, use denied readers to handle exceptions and override the list allowed readers. The maximum number of elements is 100.
      { # Reference to a user, group, or domain.
        &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
        &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
          &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
          &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
          &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
        },
        &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
      },
    ],
    &quot;inheritAclFrom&quot;: &quot;A String&quot;, # Name of the item to inherit the Access Permission List (ACL) from. Note: ACL inheritance *only* provides access permissions to child items and does not define structural relationships, nor does it provide convenient ways to delete large groups of items. Deleting an ACL parent from the index only alters the access permissions of child items that reference the parent in the inheritAclFrom field. The item is still in the index, but may not visible in search results. By contrast, deletion of a container item also deletes all items that reference the container via the containerName field. The maximum length for this field is 1536 characters.
    &quot;owners&quot;: [ # Optional. List of owners for the item. This field has no bearing on document access permissions. It does, however, offer a slight ranking boosts items where the querying user is an owner. The maximum number of elements is 5.
      { # Reference to a user, group, or domain.
        &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
        &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
          &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
          &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
          &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
        },
        &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
      },
    ],
    &quot;readers&quot;: [ # List of principals who are allowed to see the item in search results. Optional if inheriting permissions from another item or if the item is not intended to be visible, such as virtual containers. The maximum number of elements is 1000.
      { # Reference to a user, group, or domain.
        &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
        &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
          &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
          &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
          &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
        },
        &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
      },
    ],
  },
  &quot;content&quot;: { # Content of an item to be indexed and surfaced by Cloud Search. Only UTF-8 encoded strings are allowed as inlineContent. If the content is uploaded and not binary, it must be UTF-8 encoded. # Item content to be indexed and made text searchable.
    &quot;contentDataRef&quot;: { # Represents an upload session reference. This reference is created via upload method. Updating of item content may refer to this uploaded content via contentDataRef. # Upload reference ID of a previously uploaded content via write method.
      &quot;name&quot;: &quot;A String&quot;, # Name of the content reference. The maximum length is 2048 characters.
    },
    &quot;contentFormat&quot;: &quot;A String&quot;,
    &quot;hash&quot;: &quot;A String&quot;, # Hashing info calculated and provided by the API client for content. Can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
    &quot;inlineContent&quot;: &quot;A String&quot;, # Content that is supplied inlined within the update method. The maximum length is 102400 bytes (100 KiB).
  },
  &quot;itemType&quot;: &quot;A String&quot;, # Type for this item.
  &quot;metadata&quot;: { # Available metadata fields for the item. # Metadata information.
    &quot;containerName&quot;: &quot;A String&quot;, # The name of the container for this item. Deletion of the container item leads to automatic deletion of this item. Note: ACLs are not inherited from a container item. To provide ACL inheritance for an item, use the inheritAclFrom field. The maximum length is 1536 characters.
    &quot;contentLanguage&quot;: &quot;A String&quot;, # The BCP-47 language code for the item, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. The maximum length is 32 characters.
    &quot;contextAttributes&quot;: [ # A set of named attributes associated with the item. This can be used for influencing the ranking of the item based on the context in the request. The maximum number of elements is 10.
      { # A named attribute associated with an item which can be used for influencing the ranking of the item based on the context in the request.
        &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. It should not be empty. The maximum length is 32 characters. The name must start with a letter and can only contain letters (A-Z, a-z) or numbers (0-9). The name will be normalized (lower-cased) before being matched.
        &quot;values&quot;: [ # Text values of the attribute. The maximum number of elements is 10. The maximum length of an element in the array is 32 characters. The value will be normalized (lower-cased) before being matched.
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;createTime&quot;: &quot;A String&quot;, # The time when the item was created in the source repository.
    &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
    &quot;interactions&quot;: [ # A list of interactions for the item. Interactions are used to improve Search quality, but are not exposed to end users. The maximum number of elements is 1000.
      { # Represents an interaction between a user and an item.
        &quot;interactionTime&quot;: &quot;A String&quot;, # The time when the user acted on the item. If multiple actions of the same type exist for a single user, only the most recent action is recorded.
        &quot;principal&quot;: { # Reference to a user, group, or domain. # The user that acted on the item.
          &quot;groupResourceName&quot;: &quot;A String&quot;, # This principal is a group identified using an external identity. The name field must specify the group resource name with this format: identitysources/{source_id}/groups/{ID}
          &quot;gsuitePrincipal&quot;: { # This principal is a GSuite user, group or domain.
            &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
            &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
            &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
          },
          &quot;userResourceName&quot;: &quot;A String&quot;, # This principal is a user identified using an external identity. The name field must specify the user resource name with this format: identitysources/{source_id}/users/{ID}
        },
        &quot;type&quot;: &quot;A String&quot;,
      },
    ],
    &quot;keywords&quot;: [ # Additional keywords or phrases that should match the item. Used internally for user generated content. The maximum number of elements is 100. The maximum length is 8192 characters.
      &quot;A String&quot;,
    ],
    &quot;mimeType&quot;: &quot;A String&quot;, # The original mime-type of ItemContent.content in the source repository. The maximum length is 256 characters.
    &quot;objectType&quot;: &quot;A String&quot;, # The type of the item. This should correspond to the name of an object definition in the schema registered for the data source. For example, if the schema for the data source contains an object definition with name &#x27;document&#x27;, then item indexing requests for objects of that type should set objectType to &#x27;document&#x27;. The maximum length is 256 characters.
    &quot;searchQualityMetadata&quot;: { # Additional search quality metadata of the item. # Additional search quality metadata of the item
      &quot;quality&quot;: 3.14, # An indication of the quality of the item, used to influence search quality. Value should be between 0.0 (lowest quality) and 1.0 (highest quality). The default value is 0.0.
    },
    &quot;sourceRepositoryUrl&quot;: &quot;A String&quot;, # Link to the source repository serving the data. Search results apply this link to the title. Whitespace or special characters may cause Cloud Search result links to trigger a redirect notice; to avoid this, encode the URL. The maximum length is 2048 characters.
    &quot;title&quot;: &quot;A String&quot;, # The title of the item. If given, this will be the displayed title of the Search result. The maximum length is 2048 characters.
    &quot;updateTime&quot;: &quot;A String&quot;, # The time when the item was last modified in the source repository.
  },
  &quot;name&quot;: &quot;A String&quot;, # Name of the Item. Format: datasources/{source_id}/items/{item_id} This is a required field. The maximum length is 1536 characters.
  &quot;payload&quot;: &quot;A String&quot;, # Additional state connector can store for this item. The maximum length is 10000 bytes.
  &quot;queue&quot;: &quot;A String&quot;, # Queue this item belongs to. The maximum length is 100 characters.
  &quot;status&quot;: { # This contains item&#x27;s status and any errors. # Status of the item. Output only field.
    &quot;code&quot;: &quot;A String&quot;, # Status code.
    &quot;processingErrors&quot;: [ # Error details in case the item is in ERROR state.
      {
        &quot;code&quot;: &quot;A String&quot;, # Error code indicating the nature of the error.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Description of the error.
        &quot;fieldViolations&quot;: [ # In case the item fields are invalid, this field contains the details about the validation errors.
          {
            &quot;description&quot;: &quot;A String&quot;, # Description of the error.
            &quot;field&quot;: &quot;A String&quot;, # Path of field with violation.
          },
        ],
      },
    ],
    &quot;repositoryErrors&quot;: [ # Repository error reported by connector.
      { # Errors when the connector is communicating to the source repository.
        &quot;errorMessage&quot;: &quot;A String&quot;, # Message that describes the error. The maximum allowable length of the message is 8192 characters.
        &quot;httpStatusCode&quot;: 42, # Error codes. Matches the definition of HTTP status codes.
        &quot;type&quot;: &quot;A String&quot;, # Type of error.
      },
    ],
  },
  &quot;structuredData&quot;: { # Available structured data fields for the item. # The structured data for the item that should conform to a registered object definition in the schema for the data source.
    &quot;hash&quot;: &quot;A String&quot;, # Hashing value provided by the API caller. This can be used with the items.push method to calculate modified state. The maximum length is 2048 characters.
    &quot;object&quot;: { # A structured data object consisting of named properties. # The structured data object that should conform to a registered object definition in the schema for the data source.
      &quot;properties&quot;: [ # The properties for the object. The maximum number of elements is 1000.
        { # A typed name-value pair for structured data. The type of the value should be the same as the registered type for the `name` property in the object definition of `objectType`.
          &quot;booleanValue&quot;: True or False,
          &quot;dateValues&quot;: { # List of date values.
            &quot;values&quot;: [
              { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
              },
            ],
          },
          &quot;doubleValues&quot;: { # List of double values.
            &quot;values&quot;: [
              3.14,
            ],
          },
          &quot;enumValues&quot;: { # List of enum values.
            &quot;values&quot;: [ # The maximum allowable length for string values is 32 characters.
              &quot;A String&quot;,
            ],
          },
          &quot;htmlValues&quot;: { # List of html values.
            &quot;values&quot;: [ # The maximum allowable length for html values is 2048 characters.
              &quot;A String&quot;,
            ],
          },
          &quot;integerValues&quot;: { # List of integer values.
            &quot;values&quot;: [
              &quot;A String&quot;,
            ],
          },
          &quot;name&quot;: &quot;A String&quot;, # The name of the property. This name should correspond to the name of the property that was registered for object definition in the schema. The maximum allowable length for this property is 256 characters.
          &quot;objectValues&quot;: { # List of object values.
            &quot;values&quot;: [
              # Object with schema name: StructuredDataObject
            ],
          },
          &quot;textValues&quot;: { # List of text values.
            &quot;values&quot;: [ # The maximum allowable length for text values is 2048 characters.
              &quot;A String&quot;,
            ],
          },
          &quot;timestampValues&quot;: { # List of timestamp values.
            &quot;values&quot;: [
              &quot;A String&quot;,
            ],
          },
        },
      ],
    },
  },
  &quot;version&quot;: &quot;A String&quot;, # Required. The indexing system stores the version from the datasource as a byte string and compares the Item version in the index to the version of the queued Item using lexical ordering. Cloud Search Indexing won&#x27;t index or delete any queued item with a version value that is less than or equal to the version of the currently indexed item. The maximum length for this field is 1024 bytes. See [this guide](https://developers.devsite.corp.google.com/cloud-search/docs/guides/operations) to understand how item version affects reindexing after delete item.
}</pre>
</div>

<div class="method">
    <code class="details" id="unreserve">unreserve(name, body=None, x__xgafv=None)</code>
  <pre>Unreserves all items from a queue, making them all eligible to be polled. This method is useful for resetting the indexing queue after a connector has been restarted. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.

Args:
  name: string, Name of the Data Source to unreserve all items. Format: datasources/{source_id} (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;connectorName&quot;: &quot;A String&quot;, # Name of connector making this call. Format: datasources/{source_id}/connectors/{ID}
  &quot;debugOptions&quot;: { # Shared request debug options for all cloudsearch RPC methods. # Common debug options.
    &quot;enableDebugging&quot;: True or False, # If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  },
  &quot;queue&quot;: &quot;A String&quot;, # Name of a queue to unreserve items from.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="upload">upload(name, body=None, x__xgafv=None)</code>
  <pre>Creates an upload session for uploading item content. For items smaller than 100 KB, it&#x27;s easier to embed the content inline within an index request. This API requires an admin or service account to execute. The service account used is the one whitelisted in the corresponding data source.

Args:
  name: string, Name of the Item to start a resumable upload. Format: datasources/{source_id}/items/{item_id}. The maximum length is 1536 bytes. (required)
  body: object, The request body.
    The object takes the form of:

{ # Start upload file request.
  &quot;connectorName&quot;: &quot;A String&quot;, # Name of connector making this call. Format: datasources/{source_id}/connectors/{ID}
  &quot;debugOptions&quot;: { # Shared request debug options for all cloudsearch RPC methods. # Common debug options.
    &quot;enableDebugging&quot;: True or False, # If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an upload session reference. This reference is created via upload method. Updating of item content may refer to this uploaded content via contentDataRef.
  &quot;name&quot;: &quot;A String&quot;, # Name of the content reference. The maximum length is 2048 characters.
}</pre>
</div>

</body></html>