> ## Documentation Index
> Fetch the complete documentation index at: https://codebeans-wishlyst.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Open a shared list



## OpenAPI

````yaml api-reference/openapi.json GET /shared-lists/{shareRef}
openapi: 3.1.0
info:
  title: Codebeans Wishlyst Shopper API
  version: 1.0.0
  summary: Versioned REST API for shopper-facing mobile apps and custom storefronts.
  description: >-
    All paths are relative to the base URL shown in the Shopify admin under
    Wishlist settings > API Settings (https://{host}/api/v1). Every response
    carries an `API-Version` header. Errors are RFC 9457
    `application/problem+json`.
servers:
  - url: https://{host}/api/v1
    description: Base URL from Wishlist settings > API Settings
    variables:
      host:
        default: codebeans-wishlist.cblyst.com
        description: App host
security:
  - ApiKey: []
    Shop: []
    CustomerId: []
  - ApiKey: []
    Shop: []
    SessionId: []
tags:
  - name: Settings
    description: Shop-level widget settings, feature switches and plan.
  - name: Wishlists
    description: The shopper's own lists.
  - name: Items
    description: Products inside one list.
  - name: Product
    description: Product-page heart and Add-to-wishlist picker.
  - name: Shared lists
    description: Shared With Me / Shared By Me tabs, opening and saving a shared list.
  - name: Sharing
    description: Share one of the shopper's lists by email or link, and stop sharing.
  - name: Account
    description: Post-login guest list claim.
  - name: Meta
    description: The machine-readable spec.
paths:
  /shared-lists/{shareRef}:
    parameters:
      - $ref: '#/components/parameters/shareRef'
    get:
      tags:
        - Shared lists
      summary: Open a shared list
      operationId: openSharedList
      parameters:
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/locale'
        - $ref: '#/components/parameters/country'
        - $ref: '#/components/parameters/withCounts'
      responses:
        '200':
          description: The shared list
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/SharedListView'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                  meta:
                    type: object
                    properties:
                      tabCounts:
                        $ref: '#/components/schemas/TabCounts'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '410':
          $ref: '#/components/responses/Gone'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  parameters:
    shareRef:
      name: shareRef
      in: path
      required: true
      schema:
        type: string
      example: sh_Hf83kQ
      description: >-
        A numeric share id, an sh_ public share id, or the shareToken value from
        a share link URL.
    page:
      name: page
      in: query
      schema:
        type: integer
        minimum: 1
        default: 1
    limit:
      name: limit
      in: query
      schema:
        type: integer
        minimum: 1
        maximum: 50
        default: 5
      description: Page size. Server default is 5 when omitted.
    locale:
      name: locale
      in: query
      schema:
        type: string
      example: en
      description: Language for product titles (Storefront API).
    country:
      name: country
      in: query
      schema:
        type: string
        default: US
      example: IN
      description: Market country code for prices.
    withCounts:
      name: withCounts
      in: query
      schema:
        type: string
        enum:
          - 'true'
          - '1'
          - 'false'
          - '0'
      description: true or 1 adds meta.tabCounts (page 1 only).
  schemas:
    SharedListView:
      type: object
      properties:
        id:
          type: integer
          description: Source wishlist id.
        name:
          type: string
        shop:
          type: string
        isPublic:
          type: boolean
        createdAt:
          type: string
          format: date-time
        isSharedView:
          type: boolean
        isOwner:
          type: boolean
        items:
          type: array
          items:
            $ref: '#/components/schemas/Item'
        sharedAt:
          type: string
          format: date-time
        canSave:
          type: boolean
        savedAs:
          oneOf:
            - type: object
              properties:
                wishlistId:
                  type: integer
                wishlistName:
                  type: string
            - type: 'null'
        shareId:
          type: string
        shareRecipient:
          type:
            - string
            - 'null'
        isLinkShare:
          type: boolean
        isLinkViewer:
          type: boolean
        isRevoked:
          type: boolean
        sharedWith:
          type: array
          items:
            $ref: '#/components/schemas/SharedUser'
        sharedBy:
          type: 'null'
    Pagination:
      type: object
      properties:
        page:
          type: integer
        limit:
          type: integer
        totalItems:
          type: integer
        totalPages:
          type: integer
        hasNextPage:
          type: boolean
        hasPrevPage:
          type: boolean
    TabCounts:
      type: object
      properties:
        mine:
          type:
            - integer
            - 'null'
        sharedWithMe:
          type:
            - integer
            - 'null'
        sharedByMe:
          type:
            - integer
            - 'null'
    Item:
      type: object
      additionalProperties: true
      description: >-
        A wishlist item enriched with live product data. Merchant-selected
        opt-in fields may also appear.
      properties:
        id:
          type: integer
        wishlistId:
          type: integer
        productId:
          type: string
        variantId:
          type:
            - string
            - 'null'
        title:
          type:
            - string
            - 'null'
        variantTitle:
          type:
            - string
            - 'null'
        handle:
          type:
            - string
            - 'null'
        image:
          type:
            - string
            - 'null'
        price:
          type:
            - string
            - 'null'
        currency:
          type:
            - string
            - 'null'
        availableForSale:
          type: boolean
        metafields:
          type: object
          additionalProperties: true
        variants:
          type: object
          description: Always serialises as {}.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    SharedUser:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
        isGuest:
          type: boolean
    Problem:
      type: object
      description: RFC 9457 problem details (application/problem+json).
      required:
        - title
        - status
        - code
        - message
      properties:
        title:
          type: string
          example: Wishlist name taken
        status:
          type: integer
          example: 409
        code:
          $ref: '#/components/schemas/ErrorCode'
        message:
          type: string
        messageKey:
          type:
            - string
            - 'null'
          description: Key into settings widgetSettings for the shop's translated text.
        messageParams:
          type: object
          additionalProperties:
            type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/FieldError'
        wishlistId:
          type:
            - integer
            - 'null'
          description: Only on SHARED_LIST_ALREADY_SAVED.
    ErrorCode:
      type: string
      enum:
        - VALIDATION_FAILED
        - MALFORMED_REQUEST
        - UNAUTHENTICATED
        - CUSTOMER_REQUIRED
        - SHARE_LOGIN_REQUIRED
        - API_ACCESS_NOT_IN_PLAN
        - GUEST_DISABLED
        - FEATURE_NOT_IN_PLAN
        - PAGE_DISABLED
        - PLAN_LIMIT_REACHED
        - WISHLIST_PRIVATE
        - NOT_OWNER
        - SHARE_LINK_TAKEN
        - SHARE_EMAIL_MISMATCH
        - ROUTE_NOT_FOUND
        - WISHLIST_NOT_FOUND
        - ITEM_NOT_FOUND
        - SHARE_NOT_FOUND
        - METHOD_NOT_ALLOWED
        - WISHLIST_NAME_TAKEN
        - ITEM_ALREADY_IN_WISHLIST
        - SINGLE_LIST_MODE
        - SHARED_LIST_ALREADY_SAVED
        - SHARE_REVOKED
        - VERSION_RETIRED
        - CANNOT_SAVE_OWN_WISHLIST
        - RATE_LIMITED
        - INTERNAL_ERROR
        - SHARE_VERIFY_FAILED
    FieldError:
      type: object
      properties:
        field:
          type: string
        message:
          type: string
  responses:
    Unauthorized:
      description: >-
        UNAUTHENTICATED (bad or missing key/shop), CUSTOMER_REQUIRED (no or
        unknown shopper), or SHARE_LOGIN_REQUIRED.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            title: Unauthenticated
            status: 401
            code: UNAUTHENTICATED
            message: Invalid API Key
            messageKey: null
    Forbidden:
      description: >-
        API_ACCESS_NOT_IN_PLAN, GUEST_DISABLED, FEATURE_NOT_IN_PLAN,
        PAGE_DISABLED, PLAN_LIMIT_REACHED, WISHLIST_PRIVATE, NOT_OWNER,
        SHARE_LINK_TAKEN or SHARE_EMAIL_MISMATCH.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            title: Guest disabled
            status: 403
            code: GUEST_DISABLED
            message: Please log in to save items to your wishlist.
            messageKey: error_guest_login_required
    NotFound:
      description: WISHLIST_NOT_FOUND, ITEM_NOT_FOUND or SHARE_NOT_FOUND.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            title: Wishlist not found
            status: 404
            code: WISHLIST_NOT_FOUND
            message: Wishlist not found
            messageKey: error_wishlist_not_found
    Gone:
      description: SHARE_REVOKED or VERSION_RETIRED.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            title: Version retired
            status: 410
            code: VERSION_RETIRED
            message: Please update the app to continue.
            messageKey: error_app_update_required
    ValidationFailed:
      description: >-
        VALIDATION_FAILED (errors[] names each field) or
        CANNOT_SAVE_OWN_WISHLIST.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            title: Validation failed
            status: 422
            code: VALIDATION_FAILED
            message: name is required.
            messageKey: null
            errors:
              - field: name
                message: name is required.
    RateLimited:
      description: RATE_LIMITED.
      headers:
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            title: Rate limited
            status: 429
            code: RATE_LIMITED
            message: Too many requests. Please try again in a minute.
            messageKey: error_too_many_requests
    InternalError:
      description: INTERNAL_ERROR.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            title: Internal error
            status: 500
            code: INTERNAL_ERROR
            message: Something went wrong. Please try again.
            messageKey: error_something_went_wrong
    ServiceUnavailable:
      description: SHARE_VERIFY_FAILED (temporary).
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            title: Share verify failed
            status: 503
            code: SHARE_VERIFY_FAILED
            message: We couldn't confirm your account just now. Please try again.
            messageKey: error_share_verify_failed
  headers:
    RetryAfter:
      schema:
        type: integer
      description: Seconds until the rate-limit window resets.
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-Shopify-ApiKey
      description: Store API key from Wishlist settings > API Settings.
    Shop:
      type: apiKey
      in: header
      name: X-Shopify-Shop
      description: The store's myshopify domain, e.g. your-store.myshopify.com.
    CustomerId:
      type: apiKey
      in: header
      name: X-Shopify-CustomerId
      description: >-
        Numeric Shopify customer id of a logged-in shopper. Verified against the
        store on every call.
    SessionId:
      type: apiKey
      in: header
      name: X-Shopify-SessionId
      description: Guest session id generated and persisted by the client.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.