Folk Notes API

Operations related to notes.

OpenAPI Specification

folk-notes-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Folk External Companies Notes API
  description: Folk's public REST API lets you manage workspaces, groups, contacts, and real-time triggers.
  version: '2025-06-09'
  contact:
    name: folk
    email: tech@folk.app
    url: https://folk.app
servers:
- url: https://api.folk.app
  description: Folk's public API production base URL.
  x-internal: false
tags:
- name: Notes
  description: Operations related to notes.
paths:
  /v1/notes:
    get:
      security:
      - bearerApiKeyAuth: []
      x-stability-level: alpha
      operationId: listNotes
      summary: List notes
      description: Retrieve a list of notes in the workspace.
      tags:
      - Notes
      parameters:
      - schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 20
        required: false
        description: The number of items to return.
        example: 20
        name: limit
        in: query
      - schema:
          type: string
          maxLength: 128
        required: false
        description: A cursor for pagination across multiple pages of results. Don’t include this parameter on the first call. Use the `pagination.nextLink` value returned in a previous response to request subsequent results.
        example: eyJvZmZzZXQiOjN9
        name: cursor
        in: query
      - schema:
          type: string
          minLength: 40
          maxLength: 40
        required: false
        description: Filter notes by entity. Only notes linked to the specified entity will be returned.
        example: per_55175e81-9a52-4ac3-930e-82792c23499b
        name: entity.id
        in: query
      responses:
        '200':
          description: A paginated list of notes in the workspace.
          links:
            updateNote:
              operationId: updateNote
              parameters:
                companyId: $response.body#/data/items/0/id
              description: The ids returned by the `GET /v1/notes` operation can be used as an input to the `PATCH /v1/notes/:noteId` operation to update a note.
            getNote:
              operationId: getNote
              parameters:
                companyId: $response.body#/data/items/0/id
              description: The ids returned by the `GET /v1/notes` operation can be used as an input to the `GET /v1/notes/:noteId` operation to retrieve a note.
            deleteNote:
              operationId: deleteNote
              parameters:
                companyId: $response.body#/data/items/0/id
              description: The ids returned by the `GET /v1/notes` operation can be used as an input to the `DELETE /v1/notes/:noteId` operation to delete a note.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          $ref: '#/components/schemas/Note'
                      pagination:
                        type: object
                        properties:
                          nextLink:
                            type: string
                    required:
                    - items
                    - pagination
                    example:
                      items:
                      - id: nte_91118b73-5a75-480b-b8e3-a33671c35cdc
                        entity:
                          id: per_55175e81-9a52-4ac3-930e-82792c23499b
                          entityType: person
                          fullName: John Doe
                        visibility: public
                        content: This is a note about John Doe
                        author:
                          type: user
                          id: usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                          fullName: John Doe
                          email: john.doe@example.com
                          deleted: false
                        createdAt: '2021-01-01T00:00:00.000Z'
                        parentNote:
                          id: nte_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                          entity:
                            id: per_55175e81-9a52-4ac3-930e-82792c23499b
                            entityType: person
                            fullName: John Doe
                          content: This is a parent note about John Doe
                          visibility: public
                          author:
                            type: user
                            id: usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                            fullName: John Doe
                            email: john.doe@example.com
                            deleted: false
                          createdAt: '2021-01-01T00:00:00.000Z'
                          deleted: false
                      pagination:
                        nextLink: https://api.folk.app/v1/notes?limit=20&cursor=eyJvZmZzZXQiOjIwfQ%3D%3D
                  deprecations:
                    type: array
                    items:
                      type: string
                    example:
                    - This field is deprecated
                required:
                - data
              example:
                data:
                  items:
                  - id: nte_91118b73-5a75-480b-b8e3-a33671c35cdc
                    entity:
                      id: per_55175e81-9a52-4ac3-930e-82792c23499b
                      entityType: person
                      fullName: John Doe
                    visibility: public
                    content: This is a note about John Doe
                    author:
                      type: user
                      id: usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                      fullName: John Doe
                      email: john.doe@example.com
                      deleted: false
                    createdAt: '2021-01-01T00:00:00.000Z'
                    parentNote:
                      id: nte_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                      entity:
                        id: per_55175e81-9a52-4ac3-930e-82792c23499b
                        entityType: person
                        fullName: John Doe
                      content: This is a parent note about John Doe
                      visibility: public
                      author:
                        type: user
                        id: usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                        fullName: John Doe
                        email: john.doe@example.com
                        deleted: false
                      createdAt: '2021-01-01T00:00:00.000Z'
                      deleted: false
                  pagination:
                    nextLink: https://api.folk.app/v1/notes?limit=20&cursor=eyJvZmZzZXQiOjIwfQ%3D%3D
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    post:
      security:
      - bearerApiKeyAuth: []
      x-stability-level: alpha
      operationId: createNote
      summary: Create a note
      description: Create a new note in the workspace.
      tags:
      - Notes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                entity:
                  type: object
                  properties:
                    id:
                      type: string
                      minLength: 40
                      maxLength: 40
                  required:
                  - id
                  additionalProperties: false
                  description: The entity connected to the note. You can link people, companies and deals.
                  example:
                    id: per_55175e81-9a52-4ac3-930e-82792c23499b
                visibility:
                  type: string
                  enum:
                  - public
                  - private
                  description: "The visibility of the note.\n\n- `public`: The note is visible to all users in the workspace.\n- `private`: The note is visible only to the current user.\n    "
                content:
                  type: string
                  minLength: 1
                  maxLength: 100000
                  description: The content of the note. Can be in plain text or in markdown format.
                  example: This is a note about **John Doe**
                parentNote:
                  type: object
                  properties:
                    id:
                      type: string
                      minLength: 40
                      maxLength: 40
                  required:
                  - id
                  additionalProperties: false
                  description: The parent note, if this note is a reply to another note.
                  example:
                    id: nte_14c18444-a0c7-459a-86b0-ccd70ebcd65c
              required:
              - entity
              - visibility
              - content
              additionalProperties: false
      responses:
        '200':
          description: The note created in the workspace.
          links:
            updateNote:
              operationId: updateNote
              parameters:
                noteId: $response.body#/data/id
              description: The id returned by the `POST /v1/notes` operation can be used as an input to the `PATCH /v1/notes/:noteId` operation to update the note.
            getNote:
              operationId: getNote
              parameters:
                companyId: $response.body#/data/id
              description: The id returned by the `POST /v1/notes` operation can be used as an input to the `GET /v1/notes/:noteId` operation to retrieve the note.
            deleteNote:
              operationId: deleteNote
              parameters:
                noteId: $response.body#/data/id
              description: The id returned by the `POST /v1/notes` operation can be used as an input to the `DELETE /v1/notes/:noteId` operation to delete the note.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Note'
                  deprecations:
                    type: array
                    items:
                      type: string
                    example:
                    - This field is deprecated
                required:
                - data
              example:
                data:
                  id: nte_91118b73-5a75-480b-b8e3-a33671c35cdc
                  entity:
                    id: per_55175e81-9a52-4ac3-930e-82792c23499b
                    entityType: person
                    fullName: John Doe
                  visibility: public
                  content: This is a note about John Doe
                  author:
                    type: user
                    id: usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                    fullName: John Doe
                    email: john.doe@example.com
                    deleted: false
                  createdAt: '2021-01-01T00:00:00.000Z'
                  parentNote:
                    id: nte_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                    entity:
                      id: per_55175e81-9a52-4ac3-930e-82792c23499b
                      entityType: person
                      fullName: John Doe
                    content: This is a parent note about John Doe
                    visibility: public
                    author:
                      type: user
                      id: usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                      fullName: John Doe
                      email: john.doe@example.com
                      deleted: false
                    createdAt: '2021-01-01T00:00:00.000Z'
                    deleted: false
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
  /v1/notes/{noteId}:
    get:
      security:
      - bearerApiKeyAuth: []
      x-stability-level: alpha
      operationId: getNote
      summary: Get a note
      description: Retrieve an existing note in the workspace.
      tags:
      - Notes
      parameters:
      - schema:
          type: string
          minLength: 40
          maxLength: 40
        required: true
        description: The ID of the note to retrieve.
        name: noteId
        in: path
      responses:
        '200':
          description: The retrieved note in the workspace.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Note'
                  deprecations:
                    type: array
                    items:
                      type: string
                    example:
                    - This field is deprecated
                required:
                - data
              example:
                data:
                  id: nte_91118b73-5a75-480b-b8e3-a33671c35cdc
                  entity:
                    id: per_55175e81-9a52-4ac3-930e-82792c23499b
                    entityType: person
                    fullName: John Doe
                  visibility: public
                  content: This is a note about John Doe
                  author:
                    type: user
                    id: usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                    fullName: John Doe
                    email: john.doe@example.com
                    deleted: false
                  createdAt: '2021-01-01T00:00:00.000Z'
                  parentNote:
                    id: nte_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                    entity:
                      id: per_55175e81-9a52-4ac3-930e-82792c23499b
                      entityType: person
                      fullName: John Doe
                    content: This is a parent note about John Doe
                    visibility: public
                    author:
                      type: user
                      id: usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                      fullName: John Doe
                      email: john.doe@example.com
                      deleted: false
                    createdAt: '2021-01-01T00:00:00.000Z'
                    deleted: false
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    patch:
      security:
      - bearerApiKeyAuth: []
      x-stability-level: alpha
      operationId: updateNote
      summary: Update a note
      description: Update an existing note in the workspace.
      tags:
      - Notes
      parameters:
      - schema:
          type: string
          minLength: 40
          maxLength: 40
        required: true
        description: The ID of the note to update.
        name: noteId
        in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
                  minLength: 1
                  maxLength: 100000
                  description: The content of the note. Can be in plain text or in markdown format.
                  example: This is a note about **John Doe**
                visibility:
                  type: string
                  enum:
                  - public
                  - private
                  description: "The visibility of the note.\n\n- `public`: The note is visible to all users in the workspace.\n- `private`: The note is visible only to the current user.\n    "
              additionalProperties: false
      responses:
        '200':
          description: The updated note in the workspace.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Note'
                  deprecations:
                    type: array
                    items:
                      type: string
                    example:
                    - This field is deprecated
                required:
                - data
              example:
                data:
                  id: nte_91118b73-5a75-480b-b8e3-a33671c35cdc
                  entity:
                    id: per_55175e81-9a52-4ac3-930e-82792c23499b
                    entityType: person
                    fullName: John Doe
                  visibility: public
                  content: This is a note about John Doe
                  author:
                    type: user
                    id: usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                    fullName: John Doe
                    email: john.doe@example.com
                    deleted: false
                  createdAt: '2021-01-01T00:00:00.000Z'
                  parentNote:
                    id: nte_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                    entity:
                      id: per_55175e81-9a52-4ac3-930e-82792c23499b
                      entityType: person
                      fullName: John Doe
                    content: This is a parent note about John Doe
                    visibility: public
                    author:
                      type: user
                      id: usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c
                      fullName: John Doe
                      email: john.doe@example.com
                      deleted: false
                    createdAt: '2021-01-01T00:00:00.000Z'
                    deleted: false
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
    delete:
      security:
      - bearerApiKeyAuth: []
      operationId: deleteNote
      summary: Delete a note
      description: Delete an existing note in the workspace.
      tags:
      - Notes
      parameters:
      - schema:
          type: string
          minLength: 40
          maxLength: 40
        required: true
        description: The ID of the note to delete.
        name: noteId
        in: path
      responses:
        '200':
          description: The ID of the deleted note.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                    required:
                    - id
                    example:
                      id: nte_91118b73-5a75-480b-b8e3-a33671c35cdc
                  deprecations:
                    type: array
                    items:
                      type: string
                    example:
                    - This field is deprecated
                required:
                - data
              example:
                data:
                  id: nte_91118b73-5a75-480b-b8e3-a33671c35cdc
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  responses:
    Forbidden:
      description: The API key doesn’t have permissions to perform the request.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: FORBIDDEN
              message: The API key doesn’t have permissions to perform the request.
              documentationUrl: https://developer.folk.app/api-reference/errors#forbidden
              requestId: 123e4567-e89b-12d3-a456-426614174000
              timestamp: '2025-10-01T12:00:00Z'
    ServiceUnavailable:
      description: The server is overloaded or down for maintenance.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: SERVICE_UNAVAILABLE
              message: The service is currently unavailable.
              documentationUrl: https://developer.folk.app/api-reference/errors#service-unavailable
              requestId: 123e4567-e89b-12d3-a456-426614174000
              timestamp: '2025-10-01T12:00:00Z'
    NotFound:
      description: The requested resource doesn’t exist.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: RESOURCE_NOT_FOUND
              message: The requested resource was not found.
              documentationUrl: https://developer.folk.app/api-reference/errors#not-found
              requestId: 123e4567-e89b-12d3-a456-426614174000
              timestamp: '2025-10-01T12:00:00Z'
    InternalServerError:
      description: Something went wrong on our end.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INTERNAL_SERVER_ERROR
              message: An internal server error occurred.
              documentationUrl: https://developer.folk.app/api-reference/errors#internal-server-error
              requestId: 123e4567-e89b-12d3-a456-426614174000
              timestamp: '2025-10-01T12:00:00Z'
    UnprocessableEntity:
      description: The request was unacceptable, often due to missing or invalid parameters.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: UNPROCESSABLE_ENTITY
              message: Invalid query parameters
              documentationUrl: https://developer.folk.app/api-reference/errors#unprocessable-entity
              details:
                issues:
                - code: too_small
                  minimum: 1
                  type: number
                  inclusive: true
                  exact: false
                  message: Number must be greater than or equal to 1
                  path:
                  - limit
              requestId: 123e4567-e89b-12d3-a456-426614174000
              timestamp: '2025-10-01T12:00:00Z'
    Unauthorized:
      description: No valid API key provided.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: UNAUTHORIZED
              message: No valid API key provided.
              documentationUrl: https://developer.folk.app/api-reference/errors#unauthorized
              requestId: 123e4567-e89b-12d3-a456-426614174000
              timestamp: '2025-10-01T12:00:00Z'
    TooManyRequests:
      description: Too many requests hit the API too quickly. We recommend an exponential backoff of your requests.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: RATE_LIMIT_EXCEEDED
              message: The rate limit has been exceeded.
              documentationUrl: https://developer.folk.app/api-reference/errors#rate-limiting
              requestId: 123e4567-e89b-12d3-a456-426614174000
              timestamp: '2025-10-01T12:00:00Z'
              details:
                limit: 1000
                remaining: 0
                retryAfter: '2025-10-01T12:00:00Z'
    BadRequest:
      description: The request was unacceptable, often due to missing an invalid parameter.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INVALID_REQUEST
              message: The request was invalid.
              documentationUrl: https://developer.folk.app/api-reference/errors#bad-request
              requestId: 123e4567-e89b-12d3-a456-426614174000
              timestamp: '2025-10-01T12:00:00Z'
  headers:
    X-RateLimit-Limit:
      schema:
        type: integer
        example: 1000
      description: The maximum number of requests that you can make in the current rate limit window.
    Retry-After:
      schema:
        type: integer
        example: 60
      description: The number of seconds to wait before making a new request after hitting the rate limit.
    X-RateLimit-Reset:
      schema:
        type: integer
        example: 1747322958
      description: The time at which the current rate limit window resets, in UTC epoch seconds.
    X-RateLimit-Remaining:
      schema:
        type: integer
        example: 998
      description: The number of requests remaining in the current rate limit window.
  schemas:
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: RATE_LIMIT_EXCEEDED
            message:
              type: string
              example: You have exceeded your rate limit.
            documentationUrl:
              type: string
              format: uri
              example: https://developer.folk.app/api-reference/errors#rate-limiting
            requestId:
              type: string
              format: uuid
              example: 123e4567-e89b-12d3-a456-426614174000
            timestamp:
              type: string
              format: date-time
              example: '2025-10-01T12:00:00Z'
            details:
              type: object
              additionalProperties: true
              example:
                limit: 1000
                remaining: 0
                retryAfter: '2025-10-01T12:00:00Z'
          required:
          - code
          - message
          - documentationUrl
          - requestId
          - timestamp
      required:
      - error
      description: Error response containing error details.
    Note:
      type: object
      properties:
        id:
          type: string
        entity:
          type: object
          properties:
            id:
              type: string
              minLength: 40
              maxLength: 40
              description: The ID of the entity connected to the note.
              example: per_55175e81-

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/folk/refs/heads/main/openapi/folk-notes-api-openapi.yml