<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, orderBy=None, pageSize=None, pageToken=None, visibility=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, orderBy=None, pageSize=None, pageToken=None, visibility=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`.
  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.
  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.
  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;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.
  &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;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;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;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;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;triangleCount&quot;: &quot;A String&quot;, # The estimated number of triangles.
            },
            &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;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;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;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, 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;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;url&quot;: &quot;A String&quot;, # The URL where the file data can be retrieved.
            },
          },
        ],
        &quot;isCurated&quot;: True or False, # Whether this asset has been curated by the Poly team.
        &quot;license&quot;: &quot;A String&quot;, # The license under which the author has made the asset available for use, if any.
        &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;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;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;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;x&quot;: 3.14, # The x component.
            &quot;y&quot;: 3.14, # The y component.
            &quot;z&quot;: 3.14, # The z component.
          },
        },
        &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;thumbnail&quot;: { # Represents a file in Poly, which can be a root, resource, or thumbnail file. # The thumbnail image for the asset.
          &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;url&quot;: &quot;A String&quot;, # The URL where the file data can be retrieved.
        },
        &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;visibility&quot;: &quot;A String&quot;, # The visibility of the asset and who can access it.
      },
    },
  ],
}</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>