> ## Documentation Index
> Fetch the complete documentation index at: https://docs.manus.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# team.asset.list

> Lists shareable team assets filtered by type, owner, time range, and (raw) permission. Use this to enumerate the team's sharing surface for DSPM scans. Accepts either `KEY_TYPE_TEAM_ASSET_AUDIT` or `KEY_TYPE_TEAM_ASSET_MGMT` (write keys implicitly include read access).

<sup>Questions or issues? Contact us at [api-support@manus.ai](mailto:api-support@manus.ai).</sup>

<Tip>
  **Auth:** Accepts either `KEY_TYPE_TEAM_ASSET_AUDIT` or `KEY_TYPE_TEAM_ASSET_MGMT` (write keys implicitly include read access). The audit row records which key type actually made the call.

  **Asset type is required.** A single call enumerates one type. To scan the full surface, call this endpoint once per [`AssetType`](/enterprise/v2/asset-governance-overview#asset-types).

  **Effective vs. raw scope.** The `permission` query filter matches the **raw** `ShareScope` stored on the share row (before admin override and global controls are applied). The `permission` returned in each result is the **effective** scope after `max_permission` has capped it. **Admin override always wins**: if a share row has an admin-set `max_permission`, that override is what `max_permission` reflects (the team's global control is bypassed); otherwise the team's global asset control fills in `max_permission` and tightens `permission` accordingly. See the [overview](/enterprise/v2/asset-governance-overview#effective-permission-and-admin-override) for the full rule.

  **`SHARE_SCOPE_PUBLIC` filter.** Only matches the v1 value the asset\_type writes today — see the [v1↔v2 mapping](/enterprise/v2/asset-governance-overview#mapping-to-v1-sharepermission). Legacy rows stored with the other v1 value will not be returned for that filter.

  **Stale shares.** Rows with `asset_exists: false` mean the underlying session / file / web-publish was deleted but the share record remains. They cannot be re-scoped via [team.asset.update\_scope](/enterprise/v2/team.asset.update_scope).

  **Pagination:** Offset-based — `limit` defaults to 100, max 1000; `offset` defaults to 0. Use `total` to compute the page count.

  **Protocols:** Also callable via Connect RPC. See [Protocols](/enterprise/v2/protocols).
</Tip>


## OpenAPI

````yaml GET /v2/team.asset.list
openapi: 3.1.0
info:
  title: Manus Team Asset Governance OpenAPI v2
  description: >-
    API for enterprise tenant administrators to enumerate and govern shareable
    team assets (DSPM workflows). Two services share this surface:
    `TeamAssetAuditApiV2Service` (read-only enumeration) and
    `TeamAssetManageApiV2Service` (admin override of share scope). The
    `KEY_TYPE_TEAM_ASSET_MGMT` key carries write access and is also accepted on
    the read endpoint; `KEY_TYPE_TEAM_ASSET_AUDIT` is read-only. All responses
    are wrapped with `{"ok": true, "request_id": "...", ...}` for success and
    `{"ok": false, "request_id": "...", "error": {"code": "...", "message":
    "..."}}` for errors. Every operation is callable via REST (paths below) or
    via Connect RPC at `/team.v2.TeamAssetAuditApiV2Service/<Method>` /
    `/team.v2.TeamAssetManageApiV2Service/<Method>`.
  version: 2.0.0
servers:
  - url: https://api.manus.im
security:
  - ApiKeyAuth: []
paths:
  /v2/team.asset.list:
    get:
      summary: ListShareableAssets
      description: >-
        Lists shareable team assets filtered by type, owner, time range, and
        (raw) permission. Use this to enumerate the team's sharing surface for
        DSPM scans. Accepts either `KEY_TYPE_TEAM_ASSET_AUDIT` or
        `KEY_TYPE_TEAM_ASSET_MGMT` (write keys implicitly include read access).
      operationId: team.v2.TeamAssetAuditApiV2Service.ListShareableAssets
      parameters:
        - name: asset_type
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/AssetType'
            description: >-
              Asset type to enumerate. Required. To scan every type, call this
              endpoint once per value.
        - name: keyword
          in: query
          schema:
            type: string
            description: Prefix match against the lowercased asset name.
        - name: owner_id
          in: query
          schema:
            type: string
            description: Limit results to assets owned by this user ID.
        - name: start_time
          in: query
          schema:
            type: string
            format: date-time
            description: Lower bound on `shared_at` (RFC3339).
        - name: end_time
          in: query
          schema:
            type: string
            format: date-time
            description: Upper bound on `shared_at` (RFC3339).
        - name: permission
          in: query
          schema:
            $ref: '#/components/schemas/ShareScope'
            description: >-
              Filter by the **raw** scope stored on the share row (before admin
              override and global controls are applied). The `permission`
              returned in the response is the **effective** scope, which may be
              tighter (e.g. global control collapses raw `SHARE_SCOPE_PUBLIC` to
              `SHARE_SCOPE_TEAM_ONLY`). `SHARE_SCOPE_PUBLIC` matches only the v1
              value the asset_type writes today (v1.PUBLIC for `SESSION_SHARE` /
              `FILE_SHARE` / `WEBSITE_PUBLISH`; v1.EXTERNAL for
              `SESSION_COLLABORATION` / `PROJECT_SHARE`) — legacy rows stored
              with the other v1 value will not be returned. For DSPM scans of
              the truly effective state, omit this filter and post-process
              client-side.
        - name: limit
          in: query
          schema:
            type: integer
            format: int32
            description: Number of records to return. Defaults to 100.
            default: 100
            minimum: 1
            maximum: 1000
            example: 100
        - name: offset
          in: query
          schema:
            type: integer
            format: int32
            description: Number of records to skip. Defaults to 0.
            default: 0
            minimum: 0
            example: 0
      responses:
        '200':
          description: Shareable assets retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    example: true
                    description: Whether the request was successful.
                  request_id:
                    type: string
                    description: Unique identifier for this API request.
                  assets:
                    type: array
                    items:
                      $ref: '#/components/schemas/ShareableAsset'
                    description: Page of shareable assets matching the filter.
                  total:
                    type: integer
                    format: int32
                    description: >-
                      Total number of records matching the filter (across all
                      pages).
                  limit:
                    type: integer
                    format: int32
                    description: Echo of the applied limit.
                  offset:
                    type: integer
                    format: int32
                    description: Echo of the applied offset.
        4XX:
          description: Error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    AssetType:
      type: string
      description: >-
        Type of shareable team asset. `SESSION_COLLABORATION` covers
        session-level collaboration controls; `SESSION_SHARE`, `FILE_SHARE`, and
        `WEBSITE_PUBLISH` cover the corresponding share surfaces;
        `PROJECT_SHARE` covers Manus project shares.
      enum:
        - ASSET_TYPE_SESSION_COLLABORATION
        - ASSET_TYPE_SESSION_SHARE
        - ASSET_TYPE_FILE_SHARE
        - ASSET_TYPE_WEBSITE_PUBLISH
        - ASSET_TYPE_PROJECT_SHARE
    ShareScope:
      type: string
      description: >-
        v2 share scope. `OWNER` keeps the asset fully private; `TEAM_ONLY`
        restricts to team members; `PUBLIC` makes the asset publicly accessible
        (the underlying v1 representation is `SHARE_PERMISSION_PUBLIC` for
        `SESSION_SHARE` / `FILE_SHARE` / `WEBSITE_PUBLISH`, and
        `SHARE_PERMISSION_EXTERNAL` for `SESSION_COLLABORATION` /
        `PROJECT_SHARE`). On the response side both v1 `PUBLIC` and `EXTERNAL`
        are folded back to `SHARE_SCOPE_PUBLIC`. See the
        [overview](/enterprise/v2/asset-governance-overview#mapping-to-v1-sharepermission)
        for the full mapping.
      enum:
        - SHARE_SCOPE_OWNER
        - SHARE_SCOPE_TEAM_ONLY
        - SHARE_SCOPE_PUBLIC
    ShareableAsset:
      type: object
      description: >-
        A single shareable asset row joined with its current effective
        permission.
      properties:
        uid:
          type: string
          description: >-
            UID of the `team_asset_shares` row. Pass this to
            [team.asset.update_scope](/enterprise/v2/team.asset.update_scope) as
            `share_uid`.
        asset_type:
          $ref: '#/components/schemas/AssetType'
          description: Asset type. Mirrors the `asset_type` filter from the request.
        asset_name:
          type: string
          description: >-
            Display name of the underlying asset (session title, file name,
            project name, …).
        asset_id:
          type: string
          description: >-
            Underlying asset identifier (session ID, file UID, project UID,
            web-publish target, …) depending on `asset_type`.
        permission:
          $ref: '#/components/schemas/ShareScope'
          description: >-
            **Effective** share scope after the cap in `max_permission` has been
            applied. If an admin override is in effect on the share row, the
            override wins and the global control is not consulted; otherwise the
            team's global control for this `asset_type` caps the share owner's
            choice. See [Effective permission and admin
            override](/enterprise/v2/asset-governance-overview#effective-permission-and-admin-override).
        max_permission:
          $ref: '#/components/schemas/ShareScope'
          description: >-
            Active ceiling on this share row. Reflects the **admin override** if
            one was set via
            [team.asset.update_scope](/enterprise/v2/team.asset.update_scope) or
            the admin panel; otherwise reflects the team's **global** asset
            control for this `asset_type`. Admin override always takes
            precedence over the global control.
        shared_at:
          type: string
          format: date-time
          description: When the share was first created.
        last_operated_at:
          type: string
          format: date-time
          description: >-
            Most recent time the share was created, modified, or
            admin-overridden.
        owner_id:
          type: string
          description: User ID of the share owner.
        session_id:
          type: string
          description: >-
            Session ID the asset belongs to. Empty for asset types that are not
            session-scoped.
        asset_exists:
          type: boolean
          description: >-
            Whether the underlying asset is still present. `false` indicates a
            stale share row (the underlying session / file / project was deleted
            but the share record remains).
    ErrorResponse:
      type: object
      description: Standard error response format returned when a request fails.
      properties:
        ok:
          type: boolean
          example: false
          description: Always false for error responses.
        request_id:
          type: string
          description: >-
            Unique identifier for this API request, useful for debugging with
            support.
        error:
          type: object
          description: Error details.
          properties:
            code:
              type: string
              description: >-
                Machine-readable error code: `invalid_argument`, `not_found`,
                `permission_denied`, `failed_precondition`, or `internal`.
            message:
              type: string
              description: Human-readable error description explaining what went wrong.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key

````