<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="#list">list(name, orderBy=None, pageSize=None, format=None, visibility=None, pageToken=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="list">list(name, orderBy=None, pageSize=None, format=None, visibility=None, pageToken=None, x__xgafv=None)</code>
  <pre>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.

Args:
  name: string, A valid user id. Currently, only the special value 'me', representing the
currently-authenticated user is supported. To use 'me', you must pass
an OAuth token with the request. (required)
  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`.
  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.
  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.
    "nextPageToken": "A String", # 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.
    "totalSize": 42, # The total number of assets in the list, without pagination.
    "userAssets": [ # A list of UserAssets matching the request.
      { # Data about the user's asset.
        "asset": { # 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.
          "updateTime": "A String", # 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.
          "displayName": "A String", # The human-readable name, set by the asset's author.
          "description": "A String", # The human-readable description, set by the asset's author.
          "license": "A String", # The license under which the author has made the asset available
              # for use, if any.
          "visibility": "A String", # The visibility of the asset and who can access it.
          "thumbnail": { # Represents a file in Poly, which can be a root, # The thumbnail image for the asset.
              # resource, or thumbnail file.
            "url": "A String", # The URL where the file data can be retrieved.
            "relativePath": "A String", # The path of the resource file relative to the
                # root file. For root or thumbnail files,
                # this is just the filename.
            "contentType": "A String", # 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).
          },
          "presentationParams": { # 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.
            "orientingRotation": { # 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 "object space" (the space
                # in which the object is defined) to "presentation space", 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'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 "w: 1" and nothing else this is the default value of
                # [0, 0, 0, 1] where x,y, and z are 0.
              "y": 3.14, # The y component.
              "x": 3.14, # The x component.
              "z": 3.14, # The z component.
              "w": 3.14, # The scalar component.
            },
            "colorSpace": "A String", # The materials' diffuse/albedo color. This does not apply to vertex colors
                # or texture maps.
            "backgroundColor": "A String", # A background color which could be used for displaying the 3D asset in a
                # 'thumbnail' or 'palette' 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.
          },
          "authorName": "A String", # The author's publicly visible name. Use this name when giving credit to the
              # author. For more information, see [Licensing](/poly/discover/licensing).
          "isCurated": True or False, # Whether this asset has been curated by the Poly team.
          "formats": [ # 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.
              "formatType": "A String", # A short string that identifies the format type of this representation.
                  # Possible values are: `FBX`, `GLTF`, `GLTF2`, `OBJ`, and `TILT`.
              "root": { # 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.
                "url": "A String", # The URL where the file data can be retrieved.
                "relativePath": "A String", # The path of the resource file relative to the
                    # root file. For root or thumbnail files,
                    # this is just the filename.
                "contentType": "A String", # 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).
              },
              "formatComplexity": { # Information on the complexity of this Format. # Complexity stats about this representation of the asset.
                "triangleCount": "A String", # The estimated number of triangles.
                "lodHint": 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).
              },
              "resources": [ # 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.
                  "url": "A String", # The URL where the file data can be retrieved.
                  "relativePath": "A String", # The path of the resource file relative to the
                      # root file. For root or thumbnail files,
                      # this is just the filename.
                  "contentType": "A String", # 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).
                },
              ],
            },
          ],
          "metadata": "A String", # Application-defined opaque metadata for this asset. This field is only
              # returned when querying for the signed-in user'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).
          "createTime": "A String", # For published assets, the time when the asset was published.
              # For unpublished assets, the time when the asset was created.
          "remixInfo": { # Info about the sources of this asset (i.e. assets that were remixed to # The remix info for the asset.
              # create this asset).
            "sourceAsset": [ # Resource ids for the sources of this remix, of the form:
                # `assets/{ASSET_ID}`
              "A String",
            ],
          },
          "name": "A String", # The unique identifier for the asset in the form:
              # `assets/{ASSET_ID}`.
        },
      },
    ],
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>