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

# List Sync Updates



## OpenAPI

````yaml /openapi.json get /v1/workspaces/{workspaceId}/sync-updates
openapi: 3.1.0
info:
  title: Specurate API
  description: ''
  version: 1.0.0
  contact: {}
servers:
  - url: https://app.specurate.com/api
    description: API Server
security: []
tags: []
paths:
  /v1/workspaces/{workspaceId}/sync-updates:
    get:
      tags:
        - Sync Updates
      summary: List Sync Updates
      operationId: SyncUpdatesController_list_v1
      parameters:
        - name: workspaceId
          required: true
          in: path
          schema:
            type: string
        - name: limit
          required: false
          in: query
          schema:
            minimum: 1
            maximum: 100
            default: 20
            type: integer
        - name: cursor
          required: false
          in: query
          schema:
            type: string
        - name: tab
          required: true
          in: query
          schema:
            type: string
            enum:
              - from_projects
              - from_catalog
        - name: familyId
          required: false
          in: query
          schema:
            type: string
        - name: projectItemId
          required: false
          in: query
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncUpdatesListResponseDto'
components:
  schemas:
    SyncUpdatesListResponseDto:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/SyncUpdateCardDto'
        nextCursor:
          type: string
          nullable: true
        hasMore:
          type: boolean
      required:
        - items
        - nextCursor
        - hasMore
    SyncUpdateCardDto:
      type: object
      properties:
        kind:
          type: string
          enum:
            - sync_change
            - product_link_proposal
        changePolicy:
          type: string
          enum:
            - apply
            - alternative
        familyId:
          type: string
        familyName:
          type: string
        familyStatus:
          type: string
        itemType:
          type: string
          enum:
            - default
            - material
            - template
        familyVersion:
          type: number
        primaryImageUrl:
          type: string
          nullable: true
        projectItemId:
          type: string
          nullable: true
        projectItemVersion:
          type: number
          nullable: true
        projectId:
          type: string
          nullable: true
        projectName:
          type: string
          nullable: true
        projectItemName:
          type: string
          nullable: true
        isComponent:
          type: boolean
        canPublishAsAlternative:
          type: boolean
        latestEventAt:
          type: string
        events:
          type: array
          items:
            $ref: '#/components/schemas/SyncChangeEventDto'
        decisionEventIds:
          type: array
          items:
            type: string
        syncState:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SyncStateCacheValue'
        partsDiffHydrated:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/PartsDiffHydratedDto'
        selectionHydrated:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SelectionHydratedDto'
        withheld:
          type: boolean
        release:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SyncUpdateReleaseDto'
        affectedProjects:
          type: array
          items:
            $ref: '#/components/schemas/AffectedProjectDto'
        productLinkProposal:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/ProductLinkProposalCardDto'
      required:
        - kind
        - changePolicy
        - familyId
        - familyName
        - familyStatus
        - itemType
        - familyVersion
        - primaryImageUrl
        - projectItemId
        - projectItemVersion
        - projectId
        - projectName
        - isComponent
        - canPublishAsAlternative
        - latestEventAt
        - events
        - decisionEventIds
        - syncState
        - partsDiffHydrated
        - selectionHydrated
        - withheld
        - release
        - affectedProjects
        - productLinkProposal
    SyncChangeEventDto:
      type: object
      properties:
        id:
          type: string
        source:
          type: string
          enum:
            - project
            - catalog
        entityType:
          type: string
          enum:
            - image
            - family
            - item
            - part
            - family_source
            - item_source
        actorUserId:
          type: string
          nullable: true
        actorName:
          type: string
        fields:
          type: array
          items:
            $ref: '#/components/schemas/SyncChangeEventFieldDto'
        imageChange:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SyncChangeEventImageChangeDto'
        createdAt:
          type: string
      required:
        - id
        - source
        - entityType
        - actorUserId
        - actorName
        - fields
        - imageChange
        - createdAt
    SyncStateCacheValue:
      type: object
      properties: {}
    PartsDiffHydratedDto:
      type: object
      properties:
        added:
          type: array
          items:
            $ref: '#/components/schemas/PartRefDto'
        removed:
          type: array
          items:
            $ref: '#/components/schemas/PartRefDto'
        quantityChanged:
          type: array
          items:
            $ref: '#/components/schemas/PartsQuantityChangeDto'
      required:
        - added
        - removed
        - quantityChanged
    SelectionHydratedDto:
      type: object
      properties:
        projectSource:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SourceRefDto'
        catalogPrimary:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SourceRefDto'
      required:
        - projectSource
        - catalogPrimary
    SyncUpdateReleaseDto:
      type: object
      properties:
        id:
          type: string
        number:
          type: number
        label:
          type: string
          nullable: true
        collectionId:
          type: string
          nullable: true
        collectionName:
          type: string
          nullable: true
      required:
        - id
        - number
        - label
        - collectionId
        - collectionName
    AffectedProjectDto:
      type: object
      properties:
        projectId:
          type: string
        projectName:
          type: string
      required:
        - projectId
        - projectName
    ProductLinkProposalCardDto:
      type: object
      properties:
        id:
          type: string
        version:
          type: number
        fromCatalogFamilyId:
          type: string
        fromCatalogFamilyName:
          type: string
        toCatalogFamilyId:
          type: string
        toCatalogFamilyName:
          type: string
        toCatalogItemId:
          type: string
        createdByName:
          type: string
        sourceKind:
          type: string
          enum:
            - sync_event
            - core_change_alternative
        sku:
          type: string
          nullable: true
        intendedChanges:
          type: array
          items:
            $ref: '#/components/schemas/ProductLinkProposalIntendedChangeDto'
      required:
        - id
        - version
        - fromCatalogFamilyId
        - fromCatalogFamilyName
        - toCatalogFamilyId
        - toCatalogFamilyName
        - toCatalogItemId
        - createdByName
        - sourceKind
        - sku
        - intendedChanges
    SyncChangeEventFieldDto:
      type: object
      properties:
        slug:
          type: string
        label:
          type: string
          nullable: true
        from:
          type: object
        to:
          type: object
        fromDisplay:
          type: string
          nullable: true
        toDisplay:
          type: string
          nullable: true
      required:
        - slug
        - label
        - from
        - to
        - fromDisplay
        - toDisplay
    SyncChangeEventImageChangeDto:
      type: object
      properties:
        fromUrl:
          type: string
          nullable: true
        toUrl:
          type: string
          nullable: true
      required:
        - fromUrl
        - toUrl
    PartRefDto:
      type: object
      properties:
        catalogItemId:
          type: string
        name:
          type: string
        primaryImageUrl:
          type: string
          nullable: true
      required:
        - catalogItemId
        - name
        - primaryImageUrl
    PartsQuantityChangeDto:
      type: object
      properties:
        part:
          $ref: '#/components/schemas/PartRefDto'
        projectQty:
          type: string
          nullable: true
        catalogQty:
          type: string
          nullable: true
      required:
        - part
        - projectQty
        - catalogQty
    SourceRefDto:
      type: object
      properties:
        familySourceId:
          type: string
        supplierName:
          type: string
      required:
        - familySourceId
        - supplierName
    ProductLinkProposalIntendedChangeDto:
      type: object
      properties:
        columnId:
          type: string
        slug:
          type: string
        label:
          type: string
        oldValue:
          type: object
        newValue:
          type: object
        oldDisplay:
          type: string
          nullable: true
        newDisplay:
          type: string
          nullable: true
      required:
        - columnId
        - slug
        - label
        - oldValue
        - newValue
        - oldDisplay
        - newDisplay

````