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

# List Project Shared Resources

> List resources in a project that have share links (requires FULL_ACCESS on project).



## OpenAPI

````yaml /api-reference/openapi.json get /projects/{project_id}/shared-resources
openapi: 3.1.0
info:
  title: Aspect Platform API
  description: A FastAPI application for Aspect Platform functionality
  version: 0.0.0
servers:
  - url: https://api.aspect.inc
security:
  - BearerAuth: []
  - ApiKeyAuth: []
paths:
  /projects/{project_id}/shared-resources:
    get:
      tags:
        - Projects
      summary: List Project Shared Resources
      description: >-
        List resources in a project that have share links (requires FULL_ACCESS
        on project).
      operationId: get_Projects_projects_project_id_shared_resources
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectSharedResourceListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ProjectSharedResourceListResponse:
      properties:
        resources:
          items:
            $ref: '#/components/schemas/ProjectSharedResourceResponse'
          type: array
          title: Resources
          description: Resources with share links in the project
        total:
          type: integer
          title: Total
          description: Total number of resources with share links in the project
      type: object
      required:
        - resources
        - total
      title: ProjectSharedResourceListResponse
      description: >-
        API response schema for listing resources that have share links within a
        project.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ProjectSharedResourceResponse:
      properties:
        resource_id:
          type: string
          format: uuid
          title: Resource Id
          description: Resource that has share links
        resource_type:
          $ref: '#/components/schemas/ResourceType'
          description: Type of resource
        resource_name:
          type: string
          title: Resource Name
          description: Name of the resource
        resource:
          $ref: '#/components/schemas/ProjectShareResource'
          description: The full resource data
        share_count:
          type: integer
          title: Share Count
          description: Total number of share links on this resource
        active_share_count:
          type: integer
          title: Active Share Count
          description: Number of active, unexpired share links
        inactive_share_count:
          type: integer
          title: Inactive Share Count
          description: Number of inactive, unexpired share links
        expired_share_count:
          type: integer
          title: Expired Share Count
          description: Number of expired share links
        in_trash:
          type: boolean
          title: In Trash
          description: Whether the shared resource is in the project's trash directory
        updated:
          type: string
          format: date-time
          title: Updated
          description: Latest share update timestamp for this resource
      type: object
      required:
        - resource_id
        - resource_type
        - resource_name
        - resource
        - share_count
        - active_share_count
        - inactive_share_count
        - expired_share_count
        - in_trash
        - updated
      title: ProjectSharedResourceResponse
      description: API response schema for a resource that has one or more share links.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    ResourceType:
      type: string
      enum:
        - workspace
        - project
        - directory
        - asset
        - symlink
        - collection
      title: ResourceType
      description: |-
        Types of resources in the system hierarchy.

        - Python enum value (``.value``) is the lowercase wire format, e.g.
          ``"workspace"``. This is what crosses the JSON boundary.
        - Python enum name (``.name``) is the uppercase identifier used as the
          PostgreSQL ENUM literal, e.g. ``'WORKSPACE'`` — SQLAlchemy uses
          ``.name`` by default for ``sa.Enum`` columns, so no DB migration is
          needed when this pattern is adopted.

        Raw SQL comparisons against the ``resources.type`` column must use
        ``.name`` (not ``.value``) to match the PG ENUM literal.
    ProjectShareResource:
      properties:
        asset:
          anyOf:
            - $ref: '#/components/schemas/AssetResponse'
            - type: 'null'
          description: Asset data if resource_type is ASSET
        collection:
          anyOf:
            - $ref: '#/components/schemas/CollectionResponse'
            - type: 'null'
          description: Collection data if resource_type is COLLECTION
        directory:
          anyOf:
            - $ref: '#/components/schemas/DirectoryGetResponse'
            - type: 'null'
          description: Directory data if resource_type is DIRECTORY
      type: object
      title: ProjectShareResource
      description: Resource data for a share in the project share list
    AssetResponse:
      properties:
        is_symlink:
          type: boolean
          title: Is Symlink
          description: True when this item is a projected symlink
          default: false
        target_path:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Target Path
          description: Symlink target path components
        target_path_type:
          anyOf:
            - $ref: '#/components/schemas/SymlinkTargetPathType'
            - type: 'null'
          description: Symlink target path type
        target_resource_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Target Resource Id
          description: Resolved target resource ID
        target_resource_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Target Resource Name
          description: Resolved target resource name
        target_resource_type:
          anyOf:
            - $ref: '#/components/schemas/ResourceType'
            - type: 'null'
          description: Resolved or hinted target resource type
        target_resolution_status:
          anyOf:
            - $ref: '#/components/schemas/SymlinkResolutionStatus'
            - type: 'null'
          description: Symlink resolution status
        id:
          type: string
          format: uuid
          title: Id
        type:
          $ref: '#/components/schemas/AssetType'
          description: Type of the asset (video, image, etc)
        name:
          type: string
          title: Name
        size_bytes:
          type: integer
          title: Size Bytes
        duration:
          anyOf:
            - type: number
            - type: 'null'
          title: Duration
          description: >-
            Duration in seconds for time-based assets. NULL for non-time-based
            assets.
        page_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Page Count
          description: Number of pages for document assets. NULL for non-document assets.
        mime_type:
          type: string
          title: Mime Type
        save_original:
          type: boolean
          title: Save Original
        path:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Path
          description: Original file path for the asset (e.g., ['path', 'to', 'file.mov'])
        features:
          anyOf:
            - $ref: '#/components/schemas/FeatureStateMapResponse'
            - type: 'null'
          description: Admin-only feature state diagnostics for this asset
        is_uploaded:
          type: boolean
          title: Is Uploaded
        user_id:
          type: string
          format: uuid
          title: User Id
        workspace_id:
          type: string
          format: uuid
          title: Workspace Id
          description: ID of the workspace this asset belongs to
        project_id:
          type: string
          format: uuid
          title: Project Id
          description: ID of the project this asset belongs to
        parent_id:
          type: string
          format: uuid
          title: Parent Id
          description: ID of the parent resource (directory or project)
        actions:
          anyOf:
            - type: integer
            - type: 'null'
          title: Actions
        comment_count:
          type: integer
          title: Comment Count
          description: Total number of visible comments on this asset, including replies
        stream_proxy:
          anyOf:
            - $ref: '#/components/schemas/ProxyDeliveryGetResponse'
            - $ref: '#/components/schemas/ProxyGetResponse'
            - type: 'null'
          title: Stream Proxy
        scrub_proxy:
          anyOf:
            - $ref: '#/components/schemas/ProxyDeliveryGetResponse'
            - $ref: '#/components/schemas/ProxyGetResponse'
            - type: 'null'
          title: Scrub Proxy
        audio_proxy:
          anyOf:
            - $ref: '#/components/schemas/ProxyDeliveryGetResponse'
            - $ref: '#/components/schemas/ProxyGetResponse'
            - type: 'null'
          title: Audio Proxy
        doc_proxy:
          anyOf:
            - $ref: '#/components/schemas/ProxyDeliveryGetResponse'
            - $ref: '#/components/schemas/ProxyGetResponse'
            - type: 'null'
          title: Doc Proxy
        scrub_preview:
          anyOf:
            - $ref: '#/components/schemas/PreviewDeliveryGetResponse'
            - $ref: '#/components/schemas/PreviewGetResponse'
            - type: 'null'
          title: Scrub Preview
        preview:
          anyOf:
            - $ref: '#/components/schemas/PreviewDeliveryGetResponse'
            - $ref: '#/components/schemas/PreviewGetResponse'
            - type: 'null'
          title: Preview
        created_by_user:
          anyOf:
            - $ref: '#/components/schemas/UserInfo'
            - type: 'null'
          description: User who created this asset
        created_by_user_id:
          type: string
          format: uuid
          title: Created By User Id
          description: ID of the user that created the asset
        client_performed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Client Performed At
          description: >-
            Server-recorded timestamp of the latest user action on this asset,
            flattened from the asset's current revision. NULL when no revision
            exists. Used by the desktop renderer to compare against a per-pin
            coverage cursor.
        version_stack_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Version Stack Id
          description: Version stack ID. NULL if not in a stack.
        version_number:
          anyOf:
            - type: integer
            - type: 'null'
          title: Version Number
          description: 1-indexed position in version stack. NULL if not in a stack.
        is_top_version:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Is Top Version
          description: TRUE for top version in stack. NULL if not in a stack.
        revision_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Revision Id
          description: ID of the revision created by this operation (set on rename/move)
        is_latest:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Is Latest
          description: Whether the revision is the overall latest (set on rename/move)
        created:
          type: string
          format: date-time
          title: Created
        updated:
          type: string
          format: date-time
          title: Updated
      type: object
      required:
        - id
        - type
        - name
        - size_bytes
        - mime_type
        - save_original
        - is_uploaded
        - user_id
        - workspace_id
        - project_id
        - parent_id
        - comment_count
        - created_by_user_id
        - created
        - updated
      title: AssetResponse
      description: API response schema for asset entity
    CollectionResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Collection ID
        name:
          type: string
          title: Name
          description: Collection name
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Collection description
        created_by_user_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Created By User Id
          description: User who created this collection
        created_by_user:
          anyOf:
            - $ref: '#/components/schemas/UserInfo'
            - type: 'null'
          description: User who created this collection
        actions:
          type: integer
          title: Actions
          description: User's permission bitmap on this collection
        num_assets:
          type: integer
          title: Num Assets
          description: Number of assets in the collection
          default: 0
        num_directories:
          type: integer
          title: Num Directories
          description: Number of directories in the collection
          default: 0
        project_id:
          type: string
          format: uuid
          title: Project Id
          description: Project ID
        appearance_settings:
          $ref: '#/components/schemas/AppearanceSettingsResponse'
          description: Appearance settings with attachments
        created:
          type: string
          format: date-time
          title: Created
          description: Creation timestamp
        updated:
          type: string
          format: date-time
          title: Updated
          description: Last update timestamp
      type: object
      required:
        - id
        - name
        - actions
        - project_id
        - appearance_settings
        - created
        - updated
      title: CollectionResponse
      description: API response schema for creating a collection
    DirectoryGetResponse:
      properties:
        is_symlink:
          type: boolean
          title: Is Symlink
          description: True when this item is a projected symlink
          default: false
        target_path:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Target Path
          description: Symlink target path components
        target_path_type:
          anyOf:
            - $ref: '#/components/schemas/SymlinkTargetPathType'
            - type: 'null'
          description: Symlink target path type
        target_resource_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Target Resource Id
          description: Resolved target resource ID
        target_resource_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Target Resource Name
          description: Resolved target resource name
        target_resource_type:
          anyOf:
            - $ref: '#/components/schemas/ResourceType'
            - type: 'null'
          description: Resolved or hinted target resource type
        target_resolution_status:
          anyOf:
            - $ref: '#/components/schemas/SymlinkResolutionStatus'
            - type: 'null'
          description: Symlink resolution status
        id:
          type: string
          format: uuid
          title: Id
          description: Directory ID
        name:
          type: string
          title: Name
          description: Directory name
        color:
          type: string
          title: Color
          description: Hex color code for the directory icon
        project_id:
          type: string
          format: uuid
          title: Project Id
          description: ID of the project this directory belongs to
        parent_id:
          type: string
          format: uuid
          title: Parent Id
          description: ID of the parent resource (directory or project)
        actions:
          anyOf:
            - type: integer
            - type: 'null'
          title: Actions
          description: User's permission bitmap on this directory
        created_by_user_id:
          type: string
          format: uuid
          title: Created By User Id
          description: ID of the user that created the directory
        created:
          type: string
          format: date-time
          title: Created
          description: Creation timestamp
        updated:
          type: string
          format: date-time
          title: Updated
          description: Last update timestamp
        client_performed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Client Performed At
          description: >-
            Server-recorded timestamp of the latest user action on this
            directory, flattened from current_revision.client_performed_at. NULL
            when no revision exists. Used by the desktop renderer to compare
            against a per-pin coverage cursor.
      type: object
      required:
        - id
        - name
        - color
        - project_id
        - parent_id
        - created_by_user_id
        - created
        - updated
      title: DirectoryGetResponse
      description: API response schema for getting a single directory
    SymlinkTargetPathType:
      type: string
      enum:
        - relative
        - internal_absolute
        - external_absolute
      title: SymlinkTargetPathType
    SymlinkResolutionStatus:
      type: string
      enum:
        - resolved
        - dangling
        - permission_denied
        - external
      title: SymlinkResolutionStatus
    AssetType:
      type: string
      enum:
        - video
        - image
        - audio
        - document
        - vector
        - other
      title: AssetType
    FeatureStateMapResponse:
      additionalProperties:
        $ref: '#/components/schemas/FeatureStateMapValueResponse'
      propertyNames:
        $ref: '#/components/schemas/FeatureType'
      type: object
      title: FeatureStateMapResponse
      description: API response feature states keyed by feature type.
    ProxyDeliveryGetResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Resource identifier
        url:
          type: string
          title: Url
          description: Presigned URL for upload or download
        url_expires_at:
          type: string
          format: date-time
          title: Url Expires At
          description: UTC datetime when the URL expires
        playback_mode:
          anyOf:
            - $ref: '#/components/schemas/AssetPlaybackMode'
            - type: 'null'
          description: >-
            How the returned proxy URL should be played. None means the URL is
            not stream playback media.
        size_bytes:
          anyOf:
            - type: integer
            - type: 'null'
          title: Size Bytes
          description: >-
            Size of the proxy file in bytes. Used so proxy downloads track the
            proxy size, not the original.
      type: object
      required:
        - id
        - url
        - url_expires_at
      title: ProxyDeliveryGetResponse
      description: API response schema for in-app proxy playback URLs.
    ProxyGetResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
      type: object
      required:
        - id
      title: ProxyGetResponse
      description: API response schema for proxy information
    PreviewDeliveryGetResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Resource identifier
        url:
          type: string
          title: Url
          description: Presigned URL for upload or download
        url_expires_at:
          type: string
          format: date-time
          title: Url Expires At
          description: UTC datetime when the URL expires
        scrub_metadata:
          anyOf:
            - $ref: '#/components/schemas/PreviewScrubMetadata'
            - type: 'null'
          description: Metadata for scrub preview sprite sheet
      type: object
      required:
        - id
        - url
        - url_expires_at
      title: PreviewDeliveryGetResponse
      description: API response schema for in-app preview rendering URLs.
    PreviewGetResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
      type: object
      required:
        - id
      title: PreviewGetResponse
      description: API response schema for preview information
    UserInfo:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: User ID
        first_name:
          type: string
          title: First Name
          description: User's first name
        last_name:
          type: string
          title: Last Name
          description: User's last name
        email:
          type: string
          title: Email
          description: User's email address
        avatar_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Avatar Url
          description: User's avatar URL
      type: object
      required:
        - id
        - first_name
        - last_name
        - email
      title: UserInfo
      description: Lightweight user information for API responses
    AppearanceSettingsResponse:
      properties:
        header:
          $ref: '#/components/schemas/HeaderAppearanceResponse'
          description: Header appearance settings
      type: object
      required:
        - header
      title: AppearanceSettingsResponse
      description: API response for appearance settings
    FeatureStateMapValueResponse:
      properties:
        state:
          $ref: '#/components/schemas/FeatureState'
        payload_out:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Payload Out
      type: object
      required:
        - state
        - payload_out
      title: FeatureStateMapValueResponse
      description: API response value inside a feature-state map.
    AssetPlaybackMode:
      type: string
      enum:
        - mp4
        - hls
      title: AssetPlaybackMode
    PreviewScrubMetadata:
      properties:
        frame_count:
          type: integer
          title: Frame Count
        width:
          type: integer
          title: Width
        height:
          type: integer
          title: Height
        frames_x:
          type: integer
          title: Frames X
        frames_y:
          type: integer
          title: Frames Y
        frame_width:
          type: integer
          title: Frame Width
        frame_height:
          type: integer
          title: Frame Height
      type: object
      required:
        - frame_count
        - width
        - height
        - frames_x
        - frames_y
        - frame_width
        - frame_height
      title: PreviewScrubMetadata
    HeaderAppearanceResponse:
      properties:
        height:
          $ref: '#/components/schemas/HeaderHeight'
          description: Height of the header
        show_icon:
          type: boolean
          title: Show Icon
          description: Whether to show the icon
        icon:
          anyOf:
            - $ref: '#/components/schemas/CustomIconData'
            - type: 'null'
          description: Icon data (upload attachment embedded in icon.upload)
        show_creation_info:
          type: boolean
          title: Show Creation Info
          description: Whether to show creator and item counts
        show_description:
          type: boolean
          title: Show Description
          description: Whether to show the description
        show_background:
          type: boolean
          title: Show Background
          description: Whether to show background
        background_attachment:
          anyOf:
            - $ref: '#/components/schemas/AttachmentResponse'
            - type: 'null'
          description: Attachment for background image
      type: object
      required:
        - height
        - show_icon
        - show_creation_info
        - show_description
        - show_background
      title: HeaderAppearanceResponse
      description: API response for header appearance settings (with attachments)
    FeatureState:
      type: string
      enum:
        - queued
        - processing
        - completed
        - failed
        - cancelled
        - na
      title: FeatureState
    HeaderHeight:
      type: string
      enum:
        - small
        - medium
        - large
      title: HeaderHeight
      description: Height options for header display
    CustomIconData:
      properties:
        type:
          $ref: '#/components/schemas/CustomIconType'
          description: Type of icon (emoji, upload, color, or url)
        emoji:
          anyOf:
            - type: string
            - type: 'null'
          title: Emoji
          description: Emoji character (if type is emoji)
        color:
          anyOf:
            - type: string
            - type: 'null'
          title: Color
          description: Hex color code (if type is color)
        url:
          anyOf:
            - type: string
            - type: 'null'
          title: Url
          description: External URL (if type is url)
        upload:
          anyOf:
            - $ref: '#/components/schemas/AttachmentResponse'
            - type: 'null'
          description: >-
            Full attachment object (if type is upload, populated by service
            layer)
      type: object
      required:
        - type
      title: CustomIconData
      description: |-
        Icon data for storage and API responses.

        Stored in JSONB `icon` column. For upload type icons:
        - The `upload` field is None in the database
        - The actual attachment is stored via `icon_attachment_id` FK
        - Service layer populates `upload` from the attachment when loading
    AttachmentResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Resource identifier
        url:
          anyOf:
            - type: string
            - type: 'null'
          title: Url
          description: Signed download URL
        url_expires_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Url Expires At
          description: When the URL expires
        user_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: User Id
          description: User who uploaded. None if deleted.
        filename:
          type: string
          title: Filename
          description: Original filename
        mime_type:
          type: string
          title: Mime Type
          description: MIME type of the file
        size_bytes:
          type: integer
          title: Size Bytes
          description: File size in bytes
        uploaded:
          type: boolean
          title: Uploaded
          description: Whether the file has been uploaded
        created:
          type: string
          format: date-time
          title: Created
          description: Created timestamp
        updated:
          type: string
          format: date-time
          title: Updated
          description: Updated timestamp
      type: object
      required:
        - id
        - user_id
        - filename
        - mime_type
        - size_bytes
        - uploaded
        - created
        - updated
      title: AttachmentResponse
      description: |-
        API response schema for an attachment.

        Inherits id, url, url_expires_at from SignedUrlData.
        Overrides url and url_expires_at as Optional since attachments
        may not be uploaded yet.
    CustomIconType:
      type: string
      enum:
        - emoji
        - upload
        - color
        - url
      title: CustomIconType
      description: Type of custom icon
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT in Authorization header. 'Bearer ' prefix optional.
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Aspect API key (sk_...) in Authorization header. 'Bearer ' optional.

````