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

# Update pinned recording views

> Set the recording views a user has pinned to the tab bar of the recordings table. The ordered list replaces the current one, so a single call pins, unpins and reorders views.

Replaces the recording views a user has pinned to the tab bar of the recordings table. Send the full ordered list: a single call pins, unpins and reorders views. `viewIds` must contain at least one view.

A user can pin public views, the private views they can access and built-in default views. The update fails, and nothing changes, if `viewIds` contains duplicates or a view the user cannot access.

<RequestExample>
  ```bash cURL theme={null}
  curl --request PUT \
    --url 'https://api.claap.io/v1/recordings/views/pinned?userEmail=jane.doe%40example.com' \
    --header 'Content-Type: application/json' \
    --header 'X-Claap-Key: <api-key>' \
    --data '{
    "viewIds": [
      "Default_MyMeetings",
      "Vw7Kp2Qm9Tx4Rb6Ln3Hd8"
    ]
  }'
  ```
</RequestExample>


## OpenAPI

````yaml PUT /v1/recordings/views/pinned
openapi: 3.1.0
info:
  title: Claap API
  description: Development documentation
  version: 0.0.0
servers:
  - url: https://api.claap.io/
security:
  - ApiKey: []
paths:
  /v1/recordings/views/pinned:
    put:
      description: >-
        Set the recording views a user has pinned to the tab bar of the
        recordings table. The ordered list replaces the current one, so a single
        call pins, unpins and reorders views.
      operationId: putV1RecordingsViewsPinned
      parameters:
        - in: query
          name: userEmail
          schema:
            type: string
            format: email
            description: >-
              Email address of the user whose pinned views are updated. It must
              belong to an active workspace member.
            example: jane.doe@example.com
          required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                viewIds:
                  type: array
                  items:
                    type: string
                  description: >-
                    Identifiers of the views to pin, in tab bar order. Replaces
                    the current pinned views. Must contain at least one view;
                    each view must be accessible to the user, and must appear
                    only once.
                  minItems: 1
              required:
                - viewIds
            example:
              viewIds:
                - Default_MyMeetings
                - Vw7Kp2Qm9Tx4Rb6Ln3Hd8
      responses:
        '200':
          description: Pinned recording views were successfully updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: array
                    items:
                      $ref: '#/components/schemas/RecordingView'
                required:
                  - result
              example:
                result:
                  - viewId: Default_MyMeetings
                    name: My Meetings
                    visibility: Public
                    icon: ':bust_in_silhouette:'
                    isDefault: true
                    ownerId: '#global'
                    columns:
                      - type: Default
                        columnId: RecordingTitle
                        isHidden: false
                      - type: Default
                        columnId: RecordingOwner
                        isHidden: false
                      - type: Default
                        columnId: RecordingDate
                        isHidden: false
                    filters:
                      peopleIn:
                        - type: Me
                      recordingTypeIn:
                        - Meeting
                    sort: []
                  - viewId: Vw7Kp2Qm9Tx4Rb6Ln3Hd8
                    name: Discovery calls
                    visibility: Public
                    icon: ':mag:'
                    isDefault: false
                    ownerId: Xk2Rd7Mv4Bn9Ts1Lq6Wf3
                    columns:
                      - type: Default
                        columnId: RecordingTitle
                        isHidden: false
                      - type: Default
                        columnId: RecordingDate
                        isHidden: false
                      - type: AiSection
                        fieldId: AiSummarySection#Lp3Wc8Yf5Jd2Hk7Rt1Bn4
                        title: Call outcome
                        hasAutogen: true
                        isConfigured: true
                        isHidden: false
                        width: 240
                    filters:
                      recordingTypeIn:
                        - Meeting
                      sourceIn:
                        - Zoom
                        - GoogleMeet
                      createdAfterRelative: 30
                    sort:
                      - field: CreatedAt
                        order: Desc
        '400':
          description: >-
            `userEmail` is not the email address of an active workspace member,
            `viewIds` is empty or contains duplicates, or a view does not exist
            or is not accessible to the user. Nothing is updated.
components:
  schemas:
    RecordingView:
      type: object
      properties:
        viewId:
          type: string
          description: The view identifier.
        name:
          type: string
          description: The view name.
        visibility:
          type: string
          enum:
            - Public
            - Private
          description: >-
            The view visibility. `Private` views are only returned by the pinned
            views endpoints; the other endpoints only access `Public` views.
        icon:
          type: string
          description: The view icon.
        isDefault:
          type: boolean
          description: >-
            Whether the view is a built-in default view. Default views cannot be
            updated or deleted.
        ownerId:
          type: string
          description: >-
            Claap user identifier of the view owner, or `#global` for built-in
            default views.
        columns:
          type: array
          items:
            $ref: '#/components/schemas/RecordingViewColumn'
          description: The columns of the recordings table.
        filters:
          $ref: '#/components/schemas/RecordingViewFilters'
        sort:
          type: array
          items:
            $ref: '#/components/schemas/RecordingViewSortDimension'
          description: The sort order of the recordings table.
      required:
        - viewId
        - name
        - visibility
        - isDefault
        - ownerId
        - columns
        - filters
        - sort
      description: A saved view of the recordings table.
    RecordingViewColumn:
      oneOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - Default
              description: Discriminates default columns from AI section columns.
            columnId:
              type: string
              description: The built-in column identifier.
            isHidden:
              type: boolean
              description: Whether the column is hidden in the table.
            width:
              type: number
              description: The column width, in pixels.
          required:
            - type
            - columnId
          description: A built-in recording column.
        - type: object
          properties:
            type:
              type: string
              enum:
                - AiSection
              description: Discriminates AI section columns from default columns.
            fieldId:
              type: string
              description: >-
                Identifier of the AI field (aka insight) displayed in the
                column.
            title:
              type: string
              description: The column title.
            hasAutogen:
              type: boolean
              description: >-
                Whether the insight is automatically generated for new
                recordings.
            isConfigured:
              type: boolean
              description: Whether the section configuration is complete.
            isHidden:
              type: boolean
              description: Whether the column is hidden in the table.
            width:
              type: number
              description: The column width, in pixels.
          required:
            - type
            - fieldId
            - title
          description: A column displaying an AI insight for each recording.
      description: >-
        A column of the recordings table, either a built-in column (`Default`)
        or an AI insight column (`AiSection`).
    RecordingViewFilters:
      type: object
      properties:
        authorIdIn:
          type: array
          items:
            $ref: '#/components/schemas/ViewAuthorFilter'
          description: Only include recordings whose author matches one of these entries.
        authorIdNotIn:
          type: array
          items:
            $ref: '#/components/schemas/ViewAuthorFilter'
          description: Exclude recordings whose author matches one of these entries.
        companyIdIn:
          type: array
          items:
            type: string
          description: >-
            Only include recordings linked to one of these CRM company
            identifiers.
        companyIdNotIn:
          type: array
          items:
            type: string
          description: Exclude recordings linked to one of these CRM company identifiers.
        createdAfterAt:
          type: string
          description: Only include recordings created after this date (ISO format).
        createdAfterRelative:
          type: number
          description: >-
            Only include recordings created after this number of days in the
            past. For instance 30 keeps recordings created within the last 30
            days.
        createdBeforeAt:
          type: string
          description: Only include recordings created before this date (ISO format).
        createdBeforeRelative:
          type: number
          description: >-
            Only include recordings created before this number of days in the
            past. For instance 7 excludes recordings created within the last 7
            days.
        dealAgeRange:
          type: string
          enum:
            - ZeroDay
            - OneDay
            - LessThan7Days
            - LessThan15Days
            - LessThan30Days
            - LessThan90Days
            - LessThan180Days
            - MoreThan180Days
          description: Only include recordings whose linked deal age falls in this range.
        dealAiStatusIn:
          type: array
          items:
            type: string
            enum:
              - Active
              - AtRisk
              - Lost
              - NeedsAction
              - OnTrack
              - Stalled
              - Won
          description: >-
            Only include recordings whose linked deal has one of these AI
            statuses.
        dealAiStatusNotIn:
          type: array
          items:
            type: string
            enum:
              - Active
              - AtRisk
              - Lost
              - NeedsAction
              - OnTrack
              - Stalled
              - Won
          description: Exclude recordings whose linked deal has one of these AI statuses.
        dealAmountCurrencyIn:
          type: array
          items:
            type: string
          description: >-
            Only include recordings whose linked deal amount uses one of these
            currencies.
        dealAmountCurrencyNotIn:
          type: array
          items:
            type: string
          description: >-
            Exclude recordings whose linked deal amount uses one of these
            currencies.
        dealAmountValue:
          $ref: '#/components/schemas/ViewNumericFilter'
          description: Filter on the linked deal amount.
        dealClosedAfterRelative:
          type: number
          description: >-
            Only include recordings whose linked deal closed after this number
            of days in the past.
        dealClosedBeforeRelative:
          type: number
          description: >-
            Only include recordings whose linked deal closed before this number
            of days in the past.
        dealIdIn:
          type: array
          items:
            type: string
          description: Only include recordings linked to one of these deal identifiers.
        dealIdNotIn:
          type: array
          items:
            type: string
          description: Exclude recordings linked to one of these deal identifiers.
        dealOpenedAfterRelative:
          type: number
          description: >-
            Only include recordings whose linked deal opened after this number
            of days in the past.
        dealOpenedBeforeRelative:
          type: number
          description: >-
            Only include recordings whose linked deal opened before this number
            of days in the past.
        dealOwnerNameIn:
          type: array
          items:
            type: string
          description: >-
            Only include recordings whose linked deal owner name is one of these
            values.
        dealOwnerNameNotIn:
          type: array
          items:
            type: string
          description: >-
            Exclude recordings whose linked deal owner name is one of these
            values.
        dealPipelineIdIn:
          type: array
          items:
            type: string
          description: >-
            Only include recordings whose linked deal belongs to one of these
            pipelines.
        dealPipelineIdNotIn:
          type: array
          items:
            type: string
          description: >-
            Exclude recordings whose linked deal belongs to one of these
            pipelines.
        dealStageIn:
          type: array
          items:
            type: string
          description: Only include recordings whose linked deal is in one of these stages.
        dealStageNotIn:
          type: array
          items:
            type: string
          description: Exclude recordings whose linked deal is in one of these stages.
        dealStatusIn:
          type: array
          items:
            type: string
            enum:
              - Lost
              - Open
              - Won
          description: Only include recordings whose linked deal has one of these statuses.
        dealStatusNotIn:
          type: array
          items:
            type: string
            enum:
              - Lost
              - Open
              - Won
          description: Exclude recordings whose linked deal has one of these statuses.
        dealTypeIn:
          type: array
          items:
            type: string
          description: Only include recordings whose linked deal has one of these types.
        dealTypeNotIn:
          type: array
          items:
            type: string
          description: Exclude recordings whose linked deal has one of these types.
        insights:
          type: array
          items:
            $ref: '#/components/schemas/RecordingViewInsightFilter'
          description: Filter recordings on AI insight values. All entries must match.
        interactivityScore:
          $ref: '#/components/schemas/ViewNumericFilter'
          description: Filter on the recording interactivity score.
        labelIdIn:
          type: array
          items:
            type: string
          description: Only include recordings carrying one of these label identifiers.
        labelIdNotIn:
          type: array
          items:
            type: string
          description: Exclude recordings carrying one of these label identifiers.
        langIso2In:
          type: array
          items:
            type: string
          description: Only include recordings in one of these languages (ISO 639-1 codes).
        langIso2NotIn:
          type: array
          items:
            type: string
          description: Exclude recordings in one of these languages (ISO 639-1 codes).
        longestCustomerStorySeconds:
          $ref: '#/components/schemas/ViewNumericFilter'
          description: Filter on the longest customer story duration, in seconds.
        longestMonologueSeconds:
          $ref: '#/components/schemas/ViewNumericFilter'
          description: Filter on the longest monologue duration, in seconds.
        patienceSeconds:
          $ref: '#/components/schemas/ViewNumericFilter'
          description: Filter on the patience metric, in seconds.
        peopleIn:
          type: array
          items:
            $ref: '#/components/schemas/ViewPeopleFilter'
          description: Only include recordings where one of these people participated.
        peopleNotIn:
          type: array
          items:
            $ref: '#/components/schemas/ViewPeopleFilter'
          description: Exclude recordings where one of these people participated.
        questionsPerHour:
          $ref: '#/components/schemas/ViewNumericFilter'
          description: Filter on the number of questions asked per hour.
        recordingIdIn:
          type: array
          items:
            type: string
          description: Only include these recording identifiers.
        recordingIdNotIn:
          type: array
          items:
            type: string
          description: Exclude these recording identifiers.
        recordingTypeIn:
          type: array
          items:
            type: string
            enum:
              - Clip
              - Meeting
          description: Only include recordings of one of these types.
        sourceIn:
          type: array
          items:
            type: string
            enum:
              - Aircall
              - Allo
              - Api
              - Call
              - GoogleMeet
              - LemlistVoip
              - Loom
              - MobileApp
              - MsTeams
              - Ringover
              - Uploaded
              - Zoom
          description: Only include recordings coming from one of these sources.
        sourceNotIn:
          type: array
          items:
            type: string
            enum:
              - Aircall
              - Allo
              - Api
              - Call
              - GoogleMeet
              - LemlistVoip
              - Loom
              - MobileApp
              - MsTeams
              - Ringover
              - Uploaded
              - Zoom
          description: Exclude recordings coming from one of these sources.
        stateIn:
          type: array
          items:
            type: string
            enum:
              - Empty
              - Uploaded
              - Ready
              - Failed
          description: Only include recordings in one of these states.
        talkingRatio:
          $ref: '#/components/schemas/ViewNumericFilter'
          description: Filter on the talking ratio metric.
        teamIdIn:
          type: array
          items:
            type: string
          description: Only include recordings owned by a member of one of these teams.
        teamIdNotIn:
          type: array
          items:
            type: string
          description: Exclude recordings owned by a member of one of these teams.
        title:
          $ref: '#/components/schemas/ViewStringFilter'
          description: Filter on the recording title.
        topicIdIn:
          type: array
          items:
            type: string
          description: Only include recordings discussing one of these topic identifiers.
        topicIdNotIn:
          type: array
          items:
            type: string
          description: Exclude recordings discussing one of these topic identifiers.
        userGroupIn:
          type: array
          items:
            type: string
          description: >-
            Only include recordings owned by a member of one of these user
            groups.
        userGroupNotIn:
          type: array
          items:
            type: string
          description: Exclude recordings owned by a member of one of these user groups.
        videoDurationSecBetween:
          $ref: '#/components/schemas/ViewNumericBetweenFilter'
          description: Filter on the recording duration, in seconds.
      description: >-
        The filters applied by the view to the recordings table. All set filters
        must match.
    RecordingViewSortDimension:
      type: object
      properties:
        field:
          type: string
          enum:
            - Author
            - Company
            - CreatedAt
            - DealAge
            - DealAmount
            - DealAmountCurrency
            - DealAmountValue
            - DealClosedAt
            - DealOpenedAt
            - DealOwnerName
            - DealStage
            - DealStatus
            - DealTitle
            - DealType
            - Insight
            - InteractivityScore
            - Label
            - LastActivityAt
            - LongestCustomerStory
            - LongestMonologue
            - Manual
            - Patience
            - People
            - QuestionsPerHour
            - TalkingRatio
            - Title
            - Topic
            - VideoDurationSec
          description: The field to sort recordings by.
        insight:
          type: object
          properties:
            fieldId:
              type: string
              description: Identifier of the AI field (aka insight) to sort by.
          required:
            - fieldId
          description: Required when `field` is `Insight`, ignored otherwise.
        order:
          type: string
          enum:
            - Asc
            - Desc
          description: The sort direction.
      required:
        - field
        - order
      description: A sort dimension of the recordings table.
    ViewAuthorFilter:
      oneOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - User
            userId:
              type: string
              description: The Claap user identifier.
          required:
            - type
            - userId
          description: Matches a specific workspace user.
        - type: object
          properties:
            type:
              type: string
              enum:
                - Me
          required:
            - type
          description: >-
            Dynamically matches the user viewing the table in the Claap
            application.
      description: >-
        References either a specific workspace user or `Me`, which resolves to
        whoever is viewing the table in the Claap application.
    ViewNumericFilter:
      type: object
      properties:
        exists:
          type: boolean
          description: >-
            Set to true to only match items where the value is set, false to
            only match items where it is missing.
        gte:
          type: number
          description: Only match values greater than or equal to this number.
        is:
          type: number
          description: Only match values equal to this number.
        isNot:
          type: number
          description: Only match values different from this number.
        lte:
          type: number
          description: Only match values less than or equal to this number.
      description: >-
        Filter on a numeric value. Combine `gte` and `lte` for ranges, or use
        `is`/`isNot` for exact matches.
    RecordingViewInsightFilter:
      oneOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - boolean
            fieldId:
              type: string
              description: Identifier of the AI field (aka insight) to filter on.
            boolFilter:
              type: object
              properties:
                is:
                  type: boolean
                  description: The boolean value to match.
              required:
                - is
          required:
            - type
            - fieldId
            - boolFilter
          description: Filter on a boolean insight.
        - type: object
          properties:
            type:
              type: string
              enum:
                - date
            fieldId:
              type: string
              description: Identifier of the AI field (aka insight) to filter on.
            dateFilter:
              $ref: '#/components/schemas/ViewNumericBetweenFilter'
          required:
            - type
            - fieldId
            - dateFilter
          description: >-
            Filter on a date insight, as a timestamp range. At least one of
            `gte` or `lte` must be set.
        - type: object
          properties:
            type:
              type: string
              enum:
                - exists
            fieldId:
              type: string
              description: Identifier of the AI field (aka insight) to filter on.
            existsFilter:
              type: boolean
              description: >-
                Set to true to only match recordings where the insight is set,
                false to only match recordings where it is missing.
          required:
            - type
            - fieldId
            - existsFilter
          description: Filter on the presence of an insight.
        - type: object
          properties:
            type:
              type: string
              enum:
                - number
            fieldId:
              type: string
              description: Identifier of the AI field (aka insight) to filter on.
            numFilter:
              $ref: '#/components/schemas/ViewNumericFilter'
          required:
            - type
            - fieldId
            - numFilter
          description: Filter on a numeric insight.
        - type: object
          properties:
            type:
              type: string
              enum:
                - select
            fieldId:
              type: string
              description: Identifier of the AI field (aka insight) to filter on.
            selectFilter:
              type: object
              properties:
                in:
                  type: array
                  items:
                    type: string
                  description: >-
                    Only match recordings where the insight is one of these
                    options.
                notIn:
                  type: array
                  items:
                    type: string
                  description: >-
                    Only match recordings where the insight is none of these
                    options.
          required:
            - type
            - fieldId
            - selectFilter
          description: Filter on a select (single or multi option) insight.
        - type: object
          properties:
            type:
              type: string
              enum:
                - string
            fieldId:
              type: string
              description: Identifier of the AI field (aka insight) to filter on.
            strFilter:
              $ref: '#/components/schemas/ViewStringFilter'
          required:
            - type
            - fieldId
            - strFilter
          description: Filter on a text insight.
      description: >-
        Filter recordings on the value of an AI insight. The filter shape
        depends on the insight type, indicated by the `type` attribute.
    ViewPeopleFilter:
      oneOf:
        - type: object
          properties:
            type:
              type: string
              enum:
                - User
            userId:
              type: string
              description: The Claap user identifier.
            name:
              type: string
              description: The user display name.
            email:
              type: string
              description: The user email address.
          required:
            - type
            - userId
            - name
          description: Matches a workspace user.
        - type: object
          properties:
            type:
              type: string
              enum:
                - Contact
            name:
              type: string
              description: The contact display name.
            email:
              type: string
              description: The contact email address.
          required:
            - type
            - name
          description: Matches an external contact.
        - type: object
          properties:
            type:
              type: string
              enum:
                - Me
          required:
            - type
          description: >-
            Dynamically matches the user viewing the table in the Claap
            application.
      description: >-
        References a meeting participant: a workspace user, an external contact,
        or `Me`, which resolves to whoever is viewing the table in the Claap
        application.
    ViewStringFilter:
      type: object
      properties:
        contains:
          type: string
          description: Only match values containing this string.
        containsNot:
          type: string
          description: Only match values not containing this string.
        exists:
          type: boolean
          description: >-
            Set to true to only match items where the value is set, false to
            only match items where it is missing.
        is:
          type: string
          description: Only match values equal to this string.
        isNot:
          type: string
          description: Only match values different from this string.
      description: Filter on a string value.
    ViewNumericBetweenFilter:
      type: object
      properties:
        gte:
          type: number
          description: Only match values greater than or equal to this number.
        lte:
          type: number
          description: Only match values less than or equal to this number.
      description: Filter on a numeric range. At least one of `gte` or `lte` must be set.
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-Claap-Key

````

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