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

  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;viewUrl&quot;: &quot;A String&quot;, # Specify the full view URL to find the corresponding item. The maximum length is 2048 characters.
    &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.
  }

  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;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;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;htmlValues&quot;: { # List of html values.
                  &quot;values&quot;: [ # The maximum allowable length for html values is 2048 characters.
                    &quot;A String&quot;,
                  ],
                },
                &quot;doubleValues&quot;: { # List of double values.
                  &quot;values&quot;: [
                    3.14,
                  ],
                },
                &quot;booleanValue&quot;: True or False,
                &quot;timestampValues&quot;: { # List of timestamp values.
                  &quot;values&quot;: [
                    &quot;A String&quot;,
                  ],
                },
                &quot;objectValues&quot;: { # List of object values.
                  &quot;values&quot;: [
                    # Object with schema name: StructuredDataObject
                  ],
                },
                &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;textValues&quot;: { # List of text values.
                  &quot;values&quot;: [ # The maximum allowable length for text values is 2048 characters.
                    &quot;A String&quot;,
                  ],
                },
                &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;month&quot;: 42, # Month of date. Must be from 1 to 12.
                      &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                    },
                  ],
                },
                &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;content&quot;: { # Content of an item to be indexed and surfaced by Cloud Search. # Item content to be indexed and made text searchable.
          &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;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;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;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;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;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;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
              },
              &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;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;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;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
              },
              &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;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;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;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;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
              },
              &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;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;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;payload&quot;: &quot;A String&quot;, # Additional state connector can store for this item. The maximum length is 10000 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;type&quot;: &quot;A String&quot;, # Type of error.
              &quot;httpStatusCode&quot;: 42, # Error codes. Matches the definition of HTTP status codes.
            },
          ],
          &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;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;errorMessage&quot;: &quot;A String&quot;, # Description of the error.
            },
          ],
          &quot;code&quot;: &quot;A String&quot;, # Status code.
        },
        &quot;metadata&quot;: { # Available metadata fields for the item. # Metadata information.
          &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;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;updateTime&quot;: &quot;A String&quot;, # The time when the item was last modified in the source repository.
          &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;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;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a G Suite user account
                  &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the G Suite domain of the customer.
                },
                &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;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;createTime&quot;: &quot;A String&quot;, # The time when the item was created 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;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;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;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;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;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;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>