<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.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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns detailed information about an asset given its name. PRIVATE assets are returned only if the currently authenticated user (via OAuth token) is the author of the asset.</p>
<p class="toc_element">
  <code><a href="#list">list(category=None, orderBy=None, format=None, keywords=None, pageSize=None, curated=None, maxComplexity=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all public, remixable assets. These are assets with an access level of PUBLIC and published under the CC-By license.</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="get">get(name, x__xgafv=None)</code>
  <pre>Returns detailed information about an asset given its name. PRIVATE assets are returned only if the currently authenticated user (via OAuth token) is the author of the asset.

Args:
  name: string, Required. An asset&#x27;s name in the form `assets/{ASSET_ID}`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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.
    &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;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;displayName&quot;: &quot;A String&quot;, # The human-readable name, set by the asset&#x27;s author.
    &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;z&quot;: 3.14, # The z component.
        &quot;x&quot;: 3.14, # The x component.
        &quot;y&quot;: 3.14, # The y component.
        &quot;w&quot;: 3.14, # The scalar 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;name&quot;: &quot;A String&quot;, # The unique identifier for the asset in the form: `assets/{ASSET_ID}`.
    &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;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;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;description&quot;: &quot;A String&quot;, # The human-readable description, set by the asset&#x27;s author.
    &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;license&quot;: &quot;A String&quot;, # The license under which the author has made the asset available for use, if any.
    &quot;isCurated&quot;: True or False, # Whether this asset has been curated by the Poly team.
    &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;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.
    &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).
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(category=None, orderBy=None, format=None, keywords=None, pageSize=None, curated=None, maxComplexity=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all public, remixable assets. These are assets with an access level of PUBLIC and published under the CC-By license.

Args:
  category: string, Filter assets based on the specified category. Supported values are: `animals`, `architecture`, `art`, `food`, `nature`, `objects`, `people`, `scenes`, `technology`, and `transport`.
  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`, `TILT`.
  keywords: string, One or more search terms to be matched against all text that Poly has indexed for assets, which includes display_name, description, and tags. Multiple keywords should be separated by spaces.
  pageSize: integer, The maximum number of assets to be returned. This value must be between `1` and `100`. Defaults to `20`.
  curated: boolean, Return only assets that have been curated by the Poly team.
  maxComplexity: string, Returns assets that are of the specified complexity or less. Defaults to COMPLEX. For example, a request for MEDIUM assets also includes SIMPLE assets.
    Allowed values
      COMPLEXITY_UNSPECIFIED - No complexity specified. This is equivalent to omitting the filter.
      COMPLEX - Highly-complex.
      MEDIUM - Averagely-complex.
      SIMPLE - Simple.
  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;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;assets&quot;: [ # A list of assets that match the criteria specified in the request.
      { # 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.
        &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;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;displayName&quot;: &quot;A String&quot;, # The human-readable name, set by the asset&#x27;s author.
        &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;z&quot;: 3.14, # The z component.
            &quot;x&quot;: 3.14, # The x component.
            &quot;y&quot;: 3.14, # The y component.
            &quot;w&quot;: 3.14, # The scalar 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;name&quot;: &quot;A String&quot;, # The unique identifier for the asset in the form: `assets/{ASSET_ID}`.
        &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;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;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;description&quot;: &quot;A String&quot;, # The human-readable description, set by the asset&#x27;s author.
        &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;license&quot;: &quot;A String&quot;, # The license under which the author has made the asset available for use, if any.
        &quot;isCurated&quot;: True or False, # Whether this asset has been curated by the Poly team.
        &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;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.
        &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).
      },
    ],
  }</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>