<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, format=None, visibility=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists assets authored by the given user. Only the value 'me', 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.</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, format=None, visibility=None, orderBy=None, pageSize=None, pageToken=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)
  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.
    Allowed values
      VISIBILITY_UNSPECIFIED - No visibility specified. Returns all assets.
      PUBLISHED - Returns only published assets.
      PRIVATE - Returns only private assets.
  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.
  pageSize: integer, The maximum number of assets to be returned. This value must be between `1` and `100`. Defaults to `20`.
  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.
  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 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. # An Asset.
          &quot;presentationParams&quot;: { # Hints for displaying the asset, based on information available when the asset was uploaded. # Hints for displaying the asset. Note that these parameters are not immutable; the author of an asset may change them post-publication.
            &quot;orientingRotation&quot;: { # A [Quaternion](//en.wikipedia.org/wiki/Quaternion). Please note: if in the 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. # 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.
              &quot;w&quot;: 3.14, # The scalar component.
              &quot;z&quot;: 3.14, # The z component.
              &quot;y&quot;: 3.14, # The y component.
              &quot;x&quot;: 3.14, # The x component.
            },
            &quot;colorSpace&quot;: &quot;A String&quot;, # The materials&#x27; diffuse/albedo color. This does not apply to vertex colors or texture maps.
            &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;license&quot;: &quot;A String&quot;, # The license under which the author has made the asset available for use, if any.
          &quot;visibility&quot;: &quot;A String&quot;, # The visibility of the asset and who can access it.
          &quot;description&quot;: &quot;A String&quot;, # The human-readable description, set by the asset&#x27;s author.
          &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;remixInfo&quot;: { # Info about the sources of this asset (i.e. assets that were remixed to create this asset). # The remix info for the asset.
            &quot;sourceAsset&quot;: [ # Resource ids for the sources of this remix, of the form: `assets/{ASSET_ID}`
              &quot;A String&quot;,
            ],
          },
          &quot;isCurated&quot;: True or False, # Whether this asset has been curated by the Poly team.
          &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name, set by the asset&#x27;s author.
          &quot;thumbnail&quot;: { # Represents a file in Poly, which can be a root, resource, or thumbnail file. # The thumbnail image for the asset.
            &quot;url&quot;: &quot;A String&quot;, # The URL where the file data can be retrieved.
            &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;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;name&quot;: &quot;A String&quot;, # The unique identifier for the asset in the form: `assets/{ASSET_ID}`.
          &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;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;url&quot;: &quot;A String&quot;, # The URL where the file data can be retrieved.
                  &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;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;root&quot;: { # Represents a file in Poly, which can be a root, resource, or thumbnail file. # 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.
                &quot;url&quot;: &quot;A String&quot;, # The URL where the file data can be retrieved.
                &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;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;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;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;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;totalSize&quot;: 42, # The total number of assets in the list, without pagination.
    &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.
  }</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>