<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.debug.html">debug</a> . <a href="cloudsearch_v1.debug.datasources.html">datasources</a> . <a href="cloudsearch_v1.debug.datasources.items.html">items</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="cloudsearch_v1.debug.datasources.items.unmappedids.html">unmappedids()</a></code>
</p>
<p class="firstline">Returns the unmappedids Resource.</p>

<p class="toc_element">
  <code><a href="#checkAccess">checkAccess(name, body=None, debugOptions_enableDebugging=None, x__xgafv=None)</a></code></p>
<p class="firstline">Checks whether an item is accessible by specified principal. **Note:** This API requires an admin account to execute.</p>
<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="#searchByViewUrl">searchByViewUrl(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Fetches the item whose viewUrl exactly matches that of the URL provided in the request. **Note:** This API requires an admin account to execute.</p>
<p class="toc_element">
  <code><a href="#searchByViewUrl_next">searchByViewUrl_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="checkAccess">checkAccess(name, body=None, debugOptions_enableDebugging=None, x__xgafv=None)</code>
  <pre>Checks whether an item is accessible by specified principal. **Note:** This API requires an admin account to execute.

Args:
  name: string, Item name, format: datasources/{source_id}/items/{item_id} (required)
  body: object, The request body.
    The object takes the form of:

{ # Reference to a user, group, or domain.
  &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;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;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
    &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
    &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
  },
}

  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:

    {
    &quot;hasAccess&quot;: True or False, # Returns true if principal has access. Returns false otherwise.
  }</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="searchByViewUrl">searchByViewUrl(name, body=None, x__xgafv=None)</code>
  <pre>Fetches the item whose viewUrl exactly matches that of the URL provided in the request. **Note:** This API requires an admin account to execute.

Args:
  name: string, Source name, format: datasources/{source_id} (required)
  body: object, The request body.
    The object takes the form of:

{
    &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;pageToken&quot;: &quot;A String&quot;, # The next_page_token value returned from a previous request, if any.
    &quot;viewUrl&quot;: &quot;A String&quot;, # Specify the full view URL to find the corresponding item. The maximum length is 2048 characters.
  }

  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;payload&quot;: &quot;A String&quot;, # Additional state connector can store for this item. The maximum length is 10000 bytes.
        &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;contentFormat&quot;: &quot;A String&quot;,
          &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;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;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;metadata&quot;: { # Available metadata fields for the item. # Metadata information.
          &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;updateTime&quot;: &quot;A String&quot;, # The time when the item was last modified in the source repository.
          &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;createTime&quot;: &quot;A String&quot;, # The time when the item was created in the source repository.
          &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;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;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;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;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;type&quot;: &quot;A String&quot;,
              &quot;principal&quot;: { # Reference to a user, group, or domain. # The user that acted on the item.
                &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;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;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
                  &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
                  &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
                },
              },
            },
          ],
          &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;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;itemType&quot;: &quot;A String&quot;, # Type for this item.
        &quot;queue&quot;: &quot;A String&quot;, # Queue this item belongs to. The maximum length is 100 characters.
        &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;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;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;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;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
                &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
              },
            },
          ],
          &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;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;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;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
                &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
              },
            },
          ],
          &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;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;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;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;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a G Suite group account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
                &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
              },
            },
          ],
        },
        &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;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;timestampValues&quot;: { # List of timestamp values.
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &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;year&quot;: 42, # Year of date. Must be from 1 to 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;integerValues&quot;: { # List of integer values.
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;objectValues&quot;: { # List of object values.
                  &quot;values&quot;: [
                    # Object with schema name: StructuredDataObject
                  ],
                },
                &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;enumValues&quot;: { # List of enum values.
                  &quot;values&quot;: [ # The maximum allowable length for string values is 32 characters.
                    &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;doubleValues&quot;: { # List of double values.
                  &quot;values&quot;: [
                    3.14,
                  ],
                },
                &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;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;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.
        &quot;status&quot;: { # This contains item&#x27;s status and any errors. # Status of the item. Output only field.
          &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;code&quot;: &quot;A String&quot;, # Status code.
          &quot;processingErrors&quot;: [ # Error details in case the item is in ERROR state.
            {
              &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;code&quot;: &quot;A String&quot;, # Error code indicating the nature of the error.
            },
          ],
        },
      },
    ],
    &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="searchByViewUrl_next">searchByViewUrl_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>

</body></html>