<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, debugOptions_enableDebugging=None, x__xgafv=None)</a></code></p>
<p class="firstline">Checks whether an item is accessible by specified principal.</p>
<p class="toc_element">
  <code><a href="#searchByViewUrl">searchByViewUrl(name, body, x__xgafv=None)</a></code></p>
<p class="firstline">Fetches the item whose viewUrl exactly matches that of the URL provided</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, debugOptions_enableDebugging=None, x__xgafv=None)</code>
  <pre>Checks whether an item is accessible by specified principal.

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

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

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

<div class="method">
    <code class="details" id="searchByViewUrl">searchByViewUrl(name, body, x__xgafv=None)</code>
  <pre>Fetches the item whose viewUrl exactly matches that of the URL provided
in the request.

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

{
    "pageToken": "A String", # The next_page_token value returned from a previous request, if any.
    "debugOptions": { # Shared request debug options for all cloudsearch RPC methods. # Common debug options.
      "enableDebugging": True or False, # If you are asked by Google to help with debugging, set this field.
          # Otherwise, ignore this field.
    },
    "viewUrl": "A String", # 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:

    {
    "nextPageToken": "A String", # Token to retrieve the next page of results, or empty if there are no
        # more results in the list.
    "items": [
      { # Represents a single object that is an item in the search index, such as a
          # file, folder, or a database record.
        "status": { # This contains item's status and any errors. # Status of the item.
            # Output only field.
          "processingErrors": [ # Error details in case the item is in ERROR state.
            {
              "code": "A String", # Error code indicating the nature of the error.
              "errorMessage": "A String", # Description of the error.
              "fieldViolations": [ # In case the item fields are invalid, this field contains the details
                  # about the validation errors.
                {
                  "field": "A String", # Path of field with violation.
                  "description": "A String", # Description of the error.
                },
              ],
            },
          ],
          "repositoryErrors": [ # Repository error reported by connector.
            { # Errors when the connector is communicating to the source repository.
              "httpStatusCode": 42, # Error codes.  Matches the definition of HTTP status codes.
              "errorMessage": "A String", # Message that describes the error. The maximum allowable length
                  # of the message is 8192 characters.
              "type": "A String", # Type of error.
            },
          ],
          "code": "A String", # Status code.
        },
        "queue": "A String", # Queue this item belongs to.
            # The maximum length is 100 characters.
        "name": "A String", # Name of the Item. Format:
            # datasources/{source_id}/items/{item_id}
            # <br />This is a required field.
            # The maximum length is 1536 characters.
        "acl": { # Access control list information for the item. For more information see # Access control list for this item.
            # https://developers.google.com/cloud-search/docs/guides/index-your-data#acls
          "aclInheritanceType": "A String", # 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.
          "readers": [ # 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.
              "userResourceName": "A String", # 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}
              "groupResourceName": "A String", # 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}
              "gsuitePrincipal": { # This principal is a GSuite user, group or domain.
                "gsuiteUserEmail": "A String", # This principal references a G Suite user account
                "gsuiteDomain": True or False, # This principal represents all users of the G Suite domain of the
                    # customer.
                "gsuiteGroupEmail": "A String", # This principal references a G Suite group account
              },
            },
          ],
          "deniedReaders": [ # 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.
              "userResourceName": "A String", # 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}
              "groupResourceName": "A String", # 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}
              "gsuitePrincipal": { # This principal is a GSuite user, group or domain.
                "gsuiteUserEmail": "A String", # This principal references a G Suite user account
                "gsuiteDomain": True or False, # This principal represents all users of the G Suite domain of the
                    # customer.
                "gsuiteGroupEmail": "A String", # This principal references a G Suite group account
              },
            },
          ],
          "owners": [ # 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.
              "userResourceName": "A String", # 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}
              "groupResourceName": "A String", # 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}
              "gsuitePrincipal": { # This principal is a GSuite user, group or domain.
                "gsuiteUserEmail": "A String", # This principal references a G Suite user account
                "gsuiteDomain": True or False, # This principal represents all users of the G Suite domain of the
                    # customer.
                "gsuiteGroupEmail": "A String", # This principal references a G Suite group account
              },
            },
          ],
          "inheritAclFrom": "A String", # 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.
        },
        "content": { # Content of an item to be indexed and surfaced by Cloud Search. # Item content to be indexed and made text searchable.
          "contentDataRef": { # Represents an upload session reference. # Upload reference ID of a previously uploaded content via write method.
              # This reference is created via upload
              # method.
              # Updating of item content may refer to this uploaded content via
              # contentDataRef.
            "name": "A String", # Name of the content reference.
                # The maximum length is 2048 characters.
          },
          "contentFormat": "A String",
          "hash": "A String", # 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.
          "inlineContent": "A String", # Content that is supplied inlined within the update method.
              # The maximum length is 102400 bytes (100 KiB).
        },
        "version": "A String", # 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.
            # <br /><br />
            # Cloud Search Indexing won'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.
        "itemType": "A String", # Type for this item.
        "structuredData": { # 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.
          "object": { # 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.
            "properties": [ # 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`.
                "objectValues": { # List of object values.
                  "values": [
                    # Object with schema name: StructuredDataObject
                  ],
                },
                "dateValues": { # List of date values.
                  "values": [
                    { # 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.
                      "month": 42, # Month of date. Must be from 1 to 12.
                      "day": 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                      "year": 42, # Year of date. Must be from 1 to 9999.
                    },
                  ],
                },
                "textValues": { # List of text values.
                  "values": [ # The maximum allowable length for text values is 2048 characters.
                    "A String",
                  ],
                },
                "enumValues": { # List of enum values.
                  "values": [ # The maximum allowable length for string values is 32 characters.
                    "A String",
                  ],
                },
                "integerValues": { # List of integer values.
                  "values": [
                    "A String",
                  ],
                },
                "doubleValues": { # List of double values.
                  "values": [
                    3.14,
                  ],
                },
                "htmlValues": { # List of html values.
                  "values": [ # The maximum allowable length for html values is 2048 characters.
                    "A String",
                  ],
                },
                "booleanValue": True or False,
                "timestampValues": { # List of timestamp values.
                  "values": [
                    "A String",
                  ],
                },
                "name": "A String", # 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.
              },
            ],
          },
          "hash": "A String", # 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.
        },
        "payload": "A String", # Additional state connector can store for this item.
            # The maximum length is 10000 bytes.
        "metadata": { # Available metadata fields for the item. # Metadata information.
          "mimeType": "A String", # The original mime-type of
              # ItemContent.content
              # in the source repository.
              # The maximum length is 256 characters.
          "containerName": "A String", # 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.
          "updateTime": "A String", # The time when the item was last modified in the source repository.
          "hash": "A String", # 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.
          "contentLanguage": "A String", # The BCP-47 language code for the item, such as "en-US" or "sr-Latn". For
              # more information, see
              # http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
              # The maximum length is 32 characters.
          "title": "A String", # The title of the item.  If given, this will be the displayed title of the
              # Search result.
              # The maximum length is 2048 characters.
          "interactions": [ # 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.
              "interactionTime": "A String", # 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.
              "type": "A String",
              "principal": { # Reference to a user, group, or domain. # The user that acted on the item.
                "userResourceName": "A String", # 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}
                "groupResourceName": "A String", # 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}
                "gsuitePrincipal": { # This principal is a GSuite user, group or domain.
                  "gsuiteUserEmail": "A String", # This principal references a G Suite user account
                  "gsuiteDomain": True or False, # This principal represents all users of the G Suite domain of the
                      # customer.
                  "gsuiteGroupEmail": "A String", # This principal references a G Suite group account
                },
              },
            },
          ],
          "searchQualityMetadata": { # Additional search quality metadata of the item. # Additional search quality metadata of the item
            "quality": 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.
          },
          "keywords": [ # 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.
            "A String",
          ],
          "sourceRepositoryUrl": "A String", # Link to the source repository serving the data.  &#83;earch results apply
              # this link to the title.
              # The maximum length is 2048 characters.
          "createTime": "A String", # The time when the item was created in the source repository.
          "objectType": "A String", # 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
              # 'document', then item indexing requests for objects of that type should set
              # objectType to 'document'.
              # The maximum length is 256 characters.
        },
      },
    ],
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>