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

# Move Folder

> Move a folder under a new parent, or to the root level with
`newParentId: null`. The target parent must be in the same workspace and you
must have access to it. You cannot move a folder into its own subtree.

Use `sharingTypeUpdateStrategy` to control how the folder's sharing
permissions are handled after the move (defaults to `KEEP_EXISTING`).

Requires edit access to the folder.




## OpenAPI

````yaml /openapi.yaml put /v1/external/folders/{folderId}/move
openapi: 3.1.0
info:
  title: Tiro API
  description: AI-powered note-taking and voice file processing API
  version: 1.0.0
  contact:
    name: Tiro Support
    email: support@tiro.ooo
    url: https://tiro.ooo
servers:
  - url: https://api.tiro.ooo
    description: Production server
security:
  - BearerAuth: []
tags:
  - name: Note
    description: Operations for managing notes and their paragraphs
  - name: Note Share Link
    description: Manage share links for notes
  - name: Note Summary
    description: Operations for retrieving note summaries
  - name: Note Document
    description: Template-based document generation from notes
  - name: Note Document Template
    description: Operations for managing note document templates
  - name: Folder
    description: Operations for retrieving folders
  - name: Voice File
    description: Operations for voice file processing
  - name: Word Memory
    description: >
      Manage word memories to improve voice transcription accuracy. Register
      important terms like company names, people's names, and product names so
      Tiro recognizes them precisely during recording. Personal word memories
      (User) and a workspace's shared word memories (Workspace) are managed
      separately. The legacy team word memory endpoints
      (`/v1/external/teams/me/word-memories`) are deprecated — removed on
      2026-06-30 — in favor of the workspace-explicit
      `/v1/external/workspaces/{workspaceGuid}/word-memories`.
  - name: Wiki
    description: |
      Access workspace wikis — unified knowledge graphs built from notes.
      Requires a workspace with wiki plan and activation enabled.
  - name: Organization
    description: >
      Endpoints for organization API keys. An organization key is issued by an

      organization admin, carries fixed scopes chosen at issuance, and can reach

      the notes in every workspace that belongs to the organization. Built for

      server-to-server integrations such as CRM sync — receive `note.ended`
      webhook

      events, generate documents for notes, and reconcile with the organization

      notes list.
  - name: Organization Management
    description: Operations for the authenticated user's organization.
paths:
  /v1/external/folders/{folderId}/move:
    put:
      tags:
        - Folder
      summary: Move Folder
      description: >
        Move a folder under a new parent, or to the root level with

        `newParentId: null`. The target parent must be in the same workspace and
        you

        must have access to it. You cannot move a folder into its own subtree.


        Use `sharingTypeUpdateStrategy` to control how the folder's sharing

        permissions are handled after the move (defaults to `KEEP_EXISTING`).


        Requires edit access to the folder.
      operationId: moveFolder
      parameters:
        - name: folderId
          in: path
          required: true
          description: Folder ID to move
          schema:
            type: string
          example: '12345'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveFolderRequest'
            examples:
              moveUnderParent:
                summary: Move under another folder (keep permissions)
                value:
                  newParentId: '98765'
                  sharingTypeUpdateStrategy: KEEP_EXISTING
              moveAndInherit:
                summary: Move under another folder and inherit its permissions
                value:
                  newParentId: '98765'
                  sharingTypeUpdateStrategy: INHERIT_FROM_PARENT
              moveToRoot:
                summary: Move to the root level
                value:
                  newParentId: null
      responses:
        '200':
          description: Folder moved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FolderDetail'
              example:
                id: '12345'
                workspaceGuid: ws_a1b2c3d4
                title: Weekly Team Meetings
                description: Notes from our weekly sync
                sharingType: ALL_MEMBER_VIEWER
                parentId: '98765'
                color: '#4A90D9'
                isTeamFolder: true
                createdAt: '2025-01-15T10:30:00Z'
                updatedAt: '2025-01-20T12:00:00Z'
        '400':
          description: >-
            Bad request — target parent not found or in a different workspace, a
            circular move into the folder's own subtree, or the move would nest
            folders more than 5 levels below the root level
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — missing API key, or a team-only key was used
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — no edit access to the folder or the target parent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Folder not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    MoveFolderRequest:
      type: object
      description: Move a folder under a new parent, or to the root level.
      properties:
        newParentId:
          type: string
          nullable: true
          description: >
            Target parent folder ID. Omit or set to `null` to move the folder to
            the

            root level. The target parent must be in the same workspace and you
            must

            have access to it.
          example: '98765'
        sharingTypeUpdateStrategy:
          $ref: '#/components/schemas/SharingTypeUpdateStrategy'
    FolderDetail:
      type: object
      description: A folder and its metadata.
      required:
        - id
        - workspaceGuid
        - title
        - description
        - sharingType
        - parentId
        - color
        - isTeamFolder
        - createdAt
        - updatedAt
      properties:
        id:
          type: string
          description: Unique identifier for the folder
          example: '12345'
        workspaceGuid:
          type: string
          description: GUID of the workspace the folder belongs to
          example: ws_a1b2c3d4
        title:
          type: string
          description: Folder title (max 50 characters)
          example: Weekly Team Meetings
        description:
          type: string
          description: Folder description. Empty string when unset.
          example: Notes from our weekly sync
        sharingType:
          $ref: '#/components/schemas/FolderSharingType'
        parentId:
          type: string
          nullable: true
          description: |
            Parent folder ID. `null` for root-level folders. In the List Folders
            response, `parentId` is also `null` when the parent folder is not
            accessible to you.
          example: '12300'
        color:
          type: string
          description: Folder color in hex format (#RRGGBB)
          example: '#4A90D9'
        isTeamFolder:
          type: boolean
          description: >
            `true` when the folder is shared with the workspace (any
            `sharingType`

            except `PRIVATE`); `false` for `PRIVATE` folders. Retained for
            backward

            compatibility — use `sharingType` for the precise access level.
          example: true
        createdAt:
          type: string
          format: date-time
          description: ISO-8601 creation timestamp (UTC)
          example: '2025-01-15T10:30:00Z'
        updatedAt:
          type: string
          format: date-time
          description: ISO-8601 last-update timestamp (UTC)
          example: '2025-01-18T14:20:00Z'
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - errorType
            - message
          properties:
            code:
              type: integer
              description: >
                6-digit error code in `AAABBB` form: first 3 digits match the
                HTTP status,

                last 3 digits are a per-status serial (e.g. `404018`). Use only
                when you need

                to distinguish specific error cases within the same HTTP status
                — values may be

                added or renumbered across releases. For general client
                branching, prefer `errorType`.
              example: 404018
            errorType:
              type: string
              description: >
                Stable, coarse-grained error category. Recommended default for
                client-side

                branching: the value-to-status mapping is part of the API
                contract and will not

                change without a breaking-change notice. Typical use:
                  - `unauthorized` → trigger re-authentication
                  - `forbidden` → surface a permission error to the user
                  - `not_found` → treat as missing resource
                  - `too_many_requests` → back off and retry
                  - `internal_error` → retry with exponential backoff
              enum:
                - bad_request
                - unauthorized
                - forbidden
                - not_found
                - not_acceptable
                - conflict
                - payload_too_large
                - unprocessable_entity
                - too_many_requests
                - internal_error
              example: not_found
            message:
              type: string
              description: >-
                Human-readable error message. Not stable; do not use for
                branching.
              example: 'No team found for user #217'
            detail:
              type: string
              nullable: true
              description: Additional error details
              example: null
    SharingTypeUpdateStrategy:
      type: string
      description: >
        How the moved folder's sharing permissions are handled.


        | Strategy | Behavior |

        |----------|----------|

        | `KEEP_EXISTING` | Keep the folder's current `sharingType`. |

        | `INHERIT_FROM_PARENT` | Adopt the new parent folder's `sharingType`. |


        - `KEEP_EXISTING`: The folder retains its current access control after
        the move.

        - `INHERIT_FROM_PARENT`: The folder adopts its new parent's
        `sharingType` and its
          member list. You must have access to the new parent. Moving to the root level
          (`newParentId: null`) has no parent to inherit from, so the folder keeps its
          existing `sharingType`.
      enum:
        - KEEP_EXISTING
        - INHERIT_FROM_PARENT
      default: KEEP_EXISTING
      example: KEEP_EXISTING
    FolderSharingType:
      type: string
      description: >
        Who can access a folder and the notes inside it.


        | Type | View | Edit |

        |------|------|------|

        | `PRIVATE` | Only you | Only you |

        | `ALL_MEMBER_VIEWER` | All workspace members | No member-wide edit
        access |

        | `ALL_MEMBER_EDITOR` | All workspace members | All workspace members |

        | `LIMITED` | Invited members only | Invited members only (per-member
        role) |


        - `PRIVATE`: Personal folder. Not shared with the workspace.

        - `ALL_MEMBER_VIEWER`: Every workspace member can view; no member-wide
        edit access is granted.

        - `ALL_MEMBER_EDITOR`: Every workspace member can view and edit.

        - `LIMITED`: Only explicitly invited members can access, each with an
        individual role (`VIEWER` or `EDITOR`).
      enum:
        - PRIVATE
        - ALL_MEMBER_VIEWER
        - ALL_MEMBER_EDITOR
        - LIMITED
      example: PRIVATE
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API key in format {id}.{secret}

````