<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="poly_v1.html">Poly API</a> . <a href="poly_v1.users.html">users</a> . <a href="poly_v1.users.assets.html">assets</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#list">list(name, pageToken=None, orderBy=None, format=None, visibility=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists assets authored by the given user. Only the value 'me', representing</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="list">list(name, pageToken=None, orderBy=None, format=None, visibility=None, pageSize=None, x__xgafv=None)</code>
  <pre>Lists assets authored by the given user. Only the value &#x27;me&#x27;, representing
the currently-authenticated user, is supported. May include assets with an
access level of PRIVATE or
UNLISTED and assets which are
All Rights Reserved for the
currently-authenticated user.

Args:
  name: string, A valid user id. Currently, only the special value &#x27;me&#x27;, representing the
currently-authenticated user is supported. To use &#x27;me&#x27;, you must pass
an OAuth token with the request. (required)
  pageToken: string, Specifies a continuation token from a previous search whose results were
split into multiple pages. To get the next page, submit the same request
specifying the value from
next_page_token.
  orderBy: string, Specifies an ordering for assets. Acceptable values are:
`BEST`, `NEWEST`, `OLDEST`. Defaults to `BEST`, which ranks assets
based on a combination of popularity and other features.
  format: string, Return only assets with the matching format. Acceptable values are:
`BLOCKS`, `FBX`, `GLTF`, `GLTF2`, `OBJ`, and `TILT`.
  visibility: string, The visibility of the assets to be returned.
Defaults to
VISIBILITY_UNSPECIFIED
which returns all assets.
  pageSize: integer, The maximum number of assets to be returned. This value must be between `1`
and `100`. Defaults to `20`.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A response message from a request to list.
    &quot;userAssets&quot;: [ # A list of UserAssets matching the request.
      { # Data about the user&#x27;s asset.
        &quot;asset&quot;: { # Represents and describes an asset in the Poly library. An asset is a 3D model # An Asset.
            # or scene created using [Tilt Brush](//www.tiltbrush.com),
            # [Blocks](//vr.google.com/blocks/), or any 3D program that produces a file
            # that can be upload to Poly.
          &quot;presentationParams&quot;: { # Hints for displaying the asset, based on information available when the asset # Hints for displaying the asset. Note that these parameters are not
              # immutable; the author of an asset may change them post-publication.
              # was uploaded.
            &quot;orientingRotation&quot;: { # A [Quaternion](//en.wikipedia.org/wiki/Quaternion). Please note: if in the # A rotation that should be applied to the object root to make it upright.
                # More precisely, this quaternion transforms from &quot;object space&quot; (the space
                # in which the object is defined) to &quot;presentation space&quot;, a coordinate
                # system where +Y is up, +X is right, -Z is forward. For example, if
                # the object is the Eiffel Tower, in its local coordinate system the
                # object might be laid out such that the base of the tower is on the
                # YZ plane and the tip of the tower is towards positive X. In this case
                # this quaternion would specify a rotation (of 90 degrees about the Z
                # axis) such that in the presentation space the base of the tower is
                # aligned with the XZ plane, and the tip of the tower lies towards +Y.
                #
                # This rotation is unrelated to the object&#x27;s pose in the web preview,
                # which is just a camera position setting and is *not* reflected in this
                # rotation.
                #
                # Please note: this is applicable only to the gLTF.
                # response you see &quot;w: 1&quot; and nothing else this is the default value of
                # [0, 0, 0, 1] where x,y, and z are 0.
              &quot;z&quot;: 3.14, # The z component.
              &quot;y&quot;: 3.14, # The y component.
              &quot;w&quot;: 3.14, # The scalar component.
              &quot;x&quot;: 3.14, # The x component.
            },
            &quot;backgroundColor&quot;: &quot;A String&quot;, # A background color which could be used for displaying the 3D asset in a
                # &#x27;thumbnail&#x27; or &#x27;palette&#x27; style view. Authors have the option to set this
                # background color when publishing or editing their asset.
                #
                # This is represented as a six-digit hexademical triplet specifying the
                # RGB components of the background color, e.g. #FF0000 for Red.
            &quot;colorSpace&quot;: &quot;A String&quot;, # The materials&#x27; diffuse/albedo color. This does not apply to vertex colors
                # or texture maps.
          },
          &quot;isCurated&quot;: True or False, # Whether this asset has been curated by the Poly team.
          &quot;metadata&quot;: &quot;A String&quot;, # Application-defined opaque metadata for this asset. This field is only
              # returned when querying for the signed-in user&#x27;s own assets, not for public
              # assets. This string is limited to 1K chars. It is up to the creator of
              # the asset to define the format for this string (for example, JSON).
          &quot;name&quot;: &quot;A String&quot;, # The unique identifier for the asset in the form:
              # `assets/{ASSET_ID}`.
          &quot;remixInfo&quot;: { # Info about the sources of this asset (i.e. assets that were remixed to # The remix info for the asset.
              # create this asset).
            &quot;sourceAsset&quot;: [ # Resource ids for the sources of this remix, of the form:
                # `assets/{ASSET_ID}`
              &quot;A String&quot;,
            ],
          },
          &quot;authorName&quot;: &quot;A String&quot;, # The author&#x27;s publicly visible name. Use this name when giving credit to the
              # author. For more information, see [Licensing](/poly/discover/licensing).
          &quot;license&quot;: &quot;A String&quot;, # The license under which the author has made the asset available
              # for use, if any.
          &quot;createTime&quot;: &quot;A String&quot;, # For published assets, the time when the asset was published.
              # For unpublished assets, the time when the asset was created.
          &quot;formats&quot;: [ # A list of Formats where each
              # format describes one representation of the asset.
            { # The same asset can be represented in different formats, for example,
                # a [WaveFront .obj](//en.wikipedia.org/wiki/Wavefront_.obj_file) file with its
                # corresponding .mtl file or a [Khronos glTF](//www.khronos.org/gltf) file
                # with its corresponding .glb binary data. A format refers to a specific
                # representation of an asset and contains all information needed to
                # retrieve and describe this representation.
              &quot;formatComplexity&quot;: { # Information on the complexity of this Format. # Complexity stats about this representation of the asset.
                &quot;triangleCount&quot;: &quot;A String&quot;, # The estimated number of triangles.
                &quot;lodHint&quot;: 42, # A non-negative integer that represents the level of detail (LOD) of this
                    # format relative to other formats of the same asset with the same
                    # format_type.
                    # This hint allows you to sort formats from the most-detailed (0) to
                    # least-detailed (integers greater than 0).
              },
              &quot;resources&quot;: [ # A list of dependencies of the root element. May include, but is not
                  # limited to, materials, textures, and shader programs.
                { # Represents a file in Poly, which can be a root,
                    # resource, or thumbnail file.
                  &quot;relativePath&quot;: &quot;A String&quot;, # The path of the resource file relative to the
                      # root file. For root or thumbnail files,
                      # this is just the filename.
                  &quot;contentType&quot;: &quot;A String&quot;, # The MIME content-type, such as `image/png`.
                      # For more information, see
                      # [MIME
                      # types](//developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types).
                  &quot;url&quot;: &quot;A String&quot;, # The URL where the file data can be retrieved.
                },
              ],
              &quot;root&quot;: { # Represents a file in Poly, which can be a root, # The root of the file hierarchy. This will always be populated.
                  # For some format_types - such as `TILT`, which are
                  # self-contained - this is all of the data.
                  #
                  # Other types - such as `OBJ` - often reference other data elements.
                  # These are contained in the resources field.
                  # resource, or thumbnail file.
                &quot;relativePath&quot;: &quot;A String&quot;, # The path of the resource file relative to the
                    # root file. For root or thumbnail files,
                    # this is just the filename.
                &quot;contentType&quot;: &quot;A String&quot;, # The MIME content-type, such as `image/png`.
                    # For more information, see
                    # [MIME
                    # types](//developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types).
                &quot;url&quot;: &quot;A String&quot;, # The URL where the file data can be retrieved.
              },
              &quot;formatType&quot;: &quot;A String&quot;, # A short string that identifies the format type of this representation.
                  # Possible values are: `FBX`, `GLTF`, `GLTF2`, `OBJ`, and `TILT`.
            },
          ],
          &quot;visibility&quot;: &quot;A String&quot;, # The visibility of the asset and who can access it.
          &quot;updateTime&quot;: &quot;A String&quot;, # The time when the asset was last modified. For published assets, whose
              # contents are immutable, the update time changes only when metadata
              # properties, such as visibility, are updated.
          &quot;thumbnail&quot;: { # Represents a file in Poly, which can be a root, # The thumbnail image for the asset.
              # resource, or thumbnail file.
            &quot;relativePath&quot;: &quot;A String&quot;, # The path of the resource file relative to the
                # root file. For root or thumbnail files,
                # this is just the filename.
            &quot;contentType&quot;: &quot;A String&quot;, # The MIME content-type, such as `image/png`.
                # For more information, see
                # [MIME
                # types](//developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types).
            &quot;url&quot;: &quot;A String&quot;, # The URL where the file data can be retrieved.
          },
          &quot;description&quot;: &quot;A String&quot;, # The human-readable description, set by the asset&#x27;s author.
          &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name, set by the asset&#x27;s author.
        },
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token for retrieving the next page. If empty,
        # indicates that there are no more pages. To get the next page, submit the
        # same request specifying this value as the
        # page_token.
    &quot;totalSize&quot;: 42, # The total number of assets in the list, without pagination.
  }</pre>
</div>

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

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

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

</body></html>