<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. Principal must be a user; groups and domain values aren't supported. **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()</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. Principal must be a user; groups and domain values aren&#x27;t supported. **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;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 Google Workspace user, group or domain.
    &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the Google Workspace domain of the customer.
    &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a Google Workspace group name.
    &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a Google Workspace 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}
}

  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;acl&quot;: { # Access control list information for the item. For more information see [Map ACLs](https://developers.google.com/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 Google Workspace user, group or domain.
              &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the Google Workspace domain of the customer.
              &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a Google Workspace group name.
              &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a Google Workspace 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;, # The 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 Google Workspace user, group or domain.
              &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the Google Workspace domain of the customer.
              &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a Google Workspace group name.
              &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a Google Workspace 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 Google Workspace user, group or domain.
              &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the Google Workspace domain of the customer.
              &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a Google Workspace group name.
              &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a Google Workspace 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. This reference is valid for 30 days after its creation. 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;, # The 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;, # The type for this item.
      &quot;metadata&quot;: { # Available metadata fields for the item. # The 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 Google Workspace user, group or domain.
                &quot;gsuiteDomain&quot;: True or False, # This principal represents all users of the Google Workspace domain of the customer.
                &quot;gsuiteGroupEmail&quot;: &quot;A String&quot;, # This principal references a Google Workspace group name.
                &quot;gsuiteUserEmail&quot;: &quot;A String&quot;, # This principal references a Google Workspace 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. Seach results apply this link to the title. Whitespace or special characters may cause Cloud Seach 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;, # The 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;, # The 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;, # The 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;, # The 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. For information on how item version affects the deletion process, refer to [Handle revisions after manual deletes](https://developers.google.com/cloud-search/docs/guides/operations).
    },
  ],
  &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()</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>