---
openapi: 3.1.2
info:
  title: pollen API
  version: 3.5.3
paths:
  /v2/status:
    get:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PollenStatus"
      summary: Get Status
      operationId: status
      tags:
        - Health
  /v2/logout:
    delete:
      responses:
        '204':
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UndefinedResponse"
      operationId: logout
      tags:
        - Auth
  /v2/login:
    post:
      parameters:
        - name: Authorization
          in: header
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PollenUserId"
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      operationId: login
      tags:
        - Auth
  /v2/users/:
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NewUser"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: string
                format: UserId
        "400":
          description: Bad Request
      summary: Create User
      operationId: CreateUser
      tags:
        - User
  /v2/users/{userId}:
    get:
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
            format: UserId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        '401':
          $ref: '#/components/responses/401'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Get User
      operationId: getUser
      tags:
        - User
    put:
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
            format: UserId
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/User"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/User"
        "400":
          description: Bad Request
      summary: Edit User
      operationId: EditUser
      tags:
        - User
  /v2/user:
    get:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserSummary"
        '401':
          $ref: '#/components/responses/401'
        '500':
          $ref: '#/components/responses/500'
      summary: Get Connected User
      operationId: getConnectedUser
      tags:
        - User
  /v2/user/password:
    put:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ChangePassword"
        required: true
      responses:
        "204":
          description: No Content
        "400":
          description: Bad Request
      summary: ChangePassword
      operationId: changePassword
      tags:
        - User
  /v2/user/avatar:
    delete:
      responses:
        "204":
          description: No Content
      summary: Delete User Avatar
      operationId: deleteUserAvatar
      tags:
        - User
    post:
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - avatar
                - filename
                - contentType
              properties:
                avatar:
                  type: string
                  format: binary
                  description: Image file for the avatar
                filename:
                  type: string
                  description: Original file name
                contentType:
                  type: string
                  description: MIME type of the file
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: string
                format: ResourceId
        "400":
          description: Bad Request
      summary: Upload user avatar
      operationId: UploadAvatar
      tags:
        - User
  /v2/user/{userId}/email:
    post:
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
            format: UserId
          description: ID of the user to add the email for
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NewEmail"
      responses:
        '200':
          description: Email added
        '401':
          description: Not authenticated
      summary: Add email to connected user
      operationId: addEmail
      tags:
        - User
  /v2/user/{userId}/email/{emailAddressId}:
    put:
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
            format: UserId
          description: ID of the user
        - name: emailAddressId
          in: path
          required: true
          schema:
            type: string
            format: UserEmailAddressId
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UserEmailAddress"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserEmailAddress"
        "400":
          description: Bad Request
      summary: Edit Email Address
      operationId: EditEmailAddress
      tags:
        - User
    delete:
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
            format: UserId
          description: ID of the user
        - name: emailAddressId
          in: path
          required: true
          schema:
            type: string
            format: UserEmailAddressId
      responses:
        "204":
          description: No Content
      summary: Remove email address
      operationId: removeEmailAddress
      tags:
        - User
  /v2/user/{userId}/email/{emailAddressId}/default:
    put:
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
            format: UserId
        - name: emailAddressId
          in: path
          required: true
          schema:
            type: string
            format: UserEmailAddressId
      responses:
        "204":
          description: No Content
      summary: Set default email address
      operationId: setDefaultEmailAddress
      tags:
        - User
  /v2/user/{userId}/email/{emailAddressId}/resendValidation:
    post:
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: string
            format: UserId
        - name: emailAddressId
          in: path
          required: true
          schema:
            type: string
            format: UserEmailAddressId
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ResendValidationRequest"
      responses:
        '201':
          description: Created
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      summary: Resend validation for a mail
      operationId: resendValidation
      tags:
      - User
  /v2/favoriteLists:
    get:
      parameters:
        - name: desc
          in: query
          schema:
            type: boolean
        - name: order
          in: query
          schema:
            type: string
        - name: pageNumber
          in: query
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          schema:
            type: integer
            format: int32
        - name: search
          in: query
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaginatedFavoriteLists"
        '401':
          description: Not authenticated
      summary: Get favorite lists
      operationId: getFavoriteLists
      tags:
        - FavoriteList
    post:
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NewFavoriteList"
      responses:
        '200':
          description: Favorite list created
          content:
            application/json:
              schema:
                type: string
                format: FavoriteListId
        '400':
          description: Bad request
        '401':
          description: Not authenticated
      summary: Create favorite list
      operationId: createFavoriteList
      tags:
        - FavoriteList
  /v2/favoriteLists/exports:
    get:
      responses:
        "200":
          description: OK
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
      summary: Export Favorite Lists
      operationId: exportFavoriteLists
      tags:
        - FavoriteList
  /v2/favoriteLists/{favoriteListId}:
    get:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FavoriteList"
      summary: Get Favorite List
      operationId: getFavoriteList
      tags:
        - FavoriteList
    put:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FavoriteList"
        required: true
      responses:
        "204":
          description: No Content
        "400":
          description: Bad Request
      summary: Edit Favorite List
      operationId: editFavoriteList
      tags:
        - FavoriteList
    delete:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
      responses:
        "204":
          description: No Content
      summary: Delete Favorite List
      operationId: deleteFavoriteLists
      tags:
        - FavoriteList
  /v2/favoriteLists/{favoriteListId}/lists:
    get:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
        - name: desc
          in: query
          schema:
            type: boolean
        - name: order
          in: query
          schema:
            type: string
        - name: pageNumber
          in: query
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          schema:
            type: integer
            format: int32
        - name: search
          in: query
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaginationResultChildFavoriteList"
      summary: Get Children Lists
      operationId: getChildrenLists
      tags:
        - FavoriteList
    post:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NewChildFavoriteList"
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Bad Request
      summary: Add Child List
      operationId: addChildList
      tags:
        - FavoriteList
  /v2/favoriteLists/{favoriteListId}/lists/{childListId}:
    put:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
        - name: childListId
          in: path
          required: true
          schema:
            type: string
            format: ChildFavoriteListeId
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ChildFavoriteList"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ChildFavoriteList"
        "400":
          description: Bad Request
      summary: Edit Child List
      operationId: EditChildList
      tags:
        - FavoriteList
    delete:
      parameters:
        - name: childListId
          in: path
          required: true
          schema:
            type: string
            format: ChildFavoriteListId
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
      responses:
        "204":
          description: No Content
      summary: Remove child list
      operationId: removeChildList
      tags:
        - FavoriteList
  /v2/favoriteLists/{favoriteListId}/members:
    get:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
        - name: desc
          in: query
          schema:
            type: boolean
        - name: order
          in: query
          schema:
            type: string
        - name: pageNumber
          in: query
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          schema:
            type: integer
            format: int32
        - name: search
          in: query
          schema:
            type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaginationResultFavoriteListMember"
      summary: Get Members
      operationId: getFavoriteListMembers
      tags:
        - FavoriteList
    post:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/NewFavoriteListMember"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: string
                format: FavoriteListMemberId
        "400":
          description: Bad Request
      summary: Add Member
      operationId: addMember
      tags:
        - FavoriteList
  /v2/favoriteLists/{favoriteListId}/members/{memberId}:
    delete:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
        - name: memberId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListMemberId
      responses:
        "204":
          description: No Content
      summary: Delete Member
      operationId: deleteMember
      tags:
        - FavoriteList
    put:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
        - name: memberId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListMemberId
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FavoriteListMember"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FavoriteListMember"
        "400":
          description: Bad Request
      summary: Edit Member
      operationId: editMember
      tags:
        - FavoriteList
  /v2/favoriteLists/{favoriteListId}/importCsv:
    post:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        "201":
          description: Created
        "400":
          description: Bad Request
      summary: Import Favorite List Members From Csv
      operationId: importFavoriteListMembersFromCsv
      tags:
        - FavoriteList
  /v2/favoriteLists/{favoriteListId}/importLdap:
    post:
      parameters:
        - name: favoriteListId
          in: path
          required: true
          schema:
            type: string
            format: FavoriteListId
      requestBody:
        content:
          application/json:
            schema:
              type: string
        required: true
      responses:
        "201":
          description: Created
      summary: Import Favorite List Members From Ldap
      operationId: importFavoriteListMembersFromLdap
      tags:
        - FavoriteList
  /v2/polls:
    get:
      parameters:
        - name: search
          in: query
          schema:
            type: string
          required: false
        - name: usage
          in: query
          schema:
            $ref: '#/components/schemas/PollGetUsage'
          required: false
        - name: filter
          in: query
          schema:
            $ref: '#/components/schemas/PollGetFilter'
          required: false
        - name: pageNumber
          in: query
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          schema:
            type: integer
            format: int32
        - name: order
          in: query
          schema:
            type: string
        - name: desc
          in: query
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaginatedPolls"
        '401':
          $ref: '#/components/responses/401'
        '500':
          $ref: '#/components/responses/500'
      summary: List polls
      operationId: getPolls
      tags:
        - Poll
  /v2/polls/{pollId}/comments:
    get:
      parameters:
        - name: pollId
          in: path
          required: true
          schema:
            type: string
            format: PollId
        - name: pageNumber
          in: query
          schema:
            type: integer
            format: int32
        - name: pageSize
          in: query
          schema:
            type: integer
            format: int32
        - name: order
          in: query
          schema:
            type: string
        - name: desc
          in: query
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaginatedComments"
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      summary: List poll comments
      operationId: getPollComments
      tags:
        - Comment
    post:
      parameters:
        - name: pollId
          in: path
          required: true
          schema:
            type: string
            format: PollId
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CommentInputs"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CommentRef"
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      summary: Create poll comment
      operationId: createPollComment
      tags:
        - Comment
  /v2/polls/{pollId}/comments/{commentId}:
    put:
      parameters:
        - name: pollId
          in: path
          required: true
          schema:
            type: string
            format: PollId
        - name: commentId
          in: path
          required: true
          schema:
            type: string
            format: CommentId
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CommentInputs"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CommentRef"
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      summary: Update existing poll comment
      operationId: updatePollComment
      tags:
        - Comment
    delete:
      parameters:
        - name: pollId
          in: path
          required: true
          schema:
            type: string
            format: PollId
        - name: commentId
          in: path
          required: true
          schema:
            type: string
            format: CommentId
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
      summary: Delete poll comment
      operationId: deletePollComment
      tags:
        - Comment
  /v2/resources/{resourceId}/preview:
    get:
      parameters:
        - name: resourceId
          in: path
          required: true
          schema:
            type: string
            format: ResourceId
        - name: maxDimension
          in: query
          schema:
            type: boolean
          required: false
      responses:
        '200':
          description: OK
          content:
            application/octet-stream:
              schema:
                $ref: "#/components/schemas/UndefinedResponse"
        '401':
          $ref: '#/components/responses/401'
        '500':
          $ref: '#/components/responses/500'
      summary: Get resource preview
      operationId: getPreview
      tags:
        - Resource
components:
  responses:
    '204':
      description: No Content
    '400':
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    '401':
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    '403':
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    '404':
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
    '500':
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'

  schemas:
    AppStatus:
      type: object
      properties:
        version:
          type: string
        commitId:
          type: string
        buildDate:
          type: string
    PersistenceStatus:
      type: object
      properties:
        nbPolls:
          type: integer
          format: int64
        errors:
          type: array
          items:
            type: string
    PollenStatus:
      type: object
      properties:
        app:
          $ref: "#/components/schemas/AppStatus"
        runtime:
          $ref: "#/components/schemas/RuntimeStatus"
        persistence:
          $ref: "#/components/schemas/PersistenceStatus"
    RuntimeStatus:
      type: object
      properties:
        jvmName:
          type: string
        javaVersion:
          type: string
        availableProcessors:
          type: integer
          format: int32
        loadAverage:
          type: number
          format: double
        memoryAllocated:
          type: string
        memoryUsed:
          type: string
        memoryFree:
          type: string
        memoryMax:
          type: string
        charset:
          type: string
        zoneId:
          type: string
        runningSince:
          type: string
          format: date-time
        uptime:
          type: string
    PollGetUsage:
      type: string
      enum:
        - ALL
        - INVITED
        - PARTICIPATED
        - CREATED
    PollGetFilter:
      type: string
      enum:
        - NONE
        - PAST
        - CURRENT
        - UPCOMING
    Pagination:
      type: object
      properties:
        count:
          type: integer
          format: int64
        currentPage:
          type: integer
          format: int32
        lastPage:
          type: integer
          format: int32
        pageSize:
          type: integer
          format: int32
        order:
          type: string
        desc:
          type: boolean
    PaginatedPolls:
      type: object
      required:
        - elements
        - pagination
      properties:
        elements:
          type: array
          items:
            $ref: "#/components/schemas/PollSummary"
        pagination:
          $ref: "#/components/schemas/Pagination"
    PollStatus:
      type: string
      enum:
        - CREATED
        - VOTING
        - ADDING_CHOICES
        - CLOSED
    PollSummary:
      type: object
      required:
        - id
        - title
        - status
        - creatorName
        - voteCount
      properties:
        id:
          type: string
        title:
          type: string
        permission:
          type: string
        status:
          $ref: "#/components/schemas/PollStatus"
        creatorAvatar:
          type: string
        creatorName:
          type: string
        voteCount:
          type: integer
          format: int64
        description:
          type: string
        beginDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        picture:
          type: string
        builtinPicture:
          type: string
    PollenUserId:
      type: object
      required:
        - id
      properties:
        id:
          type: string
    UserSummary:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
        name:
          type: string
        avatar:
          type: string
          format: ResourceId
        gtuValidated:
          type: boolean
    User:
      type: object
      required:
        - id
        - name
        - emailAddresses
        - gtuValidated
      properties:
        id:
          type: string
          format: UserId
        name:
          type: string
        avatar:
          type: string
        emailAddresses:
          type: array
          items:
            $ref: '#/components/schemas/UserEmailAddress'
        gtuValidated:
          type: boolean
    NewUser:
      type: object
      required:
        - name
        - defaultEmailAddress
        - password
        - gtuValidated
      properties:
        name:
          type: string
        defaultEmailAddress:
          type: string
        password:
          type: string
        gtuValidated:
          type: boolean
    ChangePassword:
      type: object
      required:
        - oldPassword
        - newPassword
      properties:
        oldPassword:
          type: string
        newPassword:
          type: string
    UserEmailAddress:
      type: object
      required:
        - id
        - emailAddress
        - validated
        - emailAddress
        - emailDefault
      properties:
        id:
          type: string
          format: UserEmailAddressId
        emailAddress:
          type: string
        emailDefault:
          type: boolean
        validated:
          type: boolean
        pgpPublicKey:
          type: string
    NewEmail:
      type: object
      required:
        - email
      properties:
        email:
          type: string
          format: email
    ResendValidationRequest:
      type: object
      required:
        - email
      properties:
        email:
          type: string
          format: email
    UndefinedResponse:
      type: null
    PaginatedComments:
      type: object
      required:
        - elements
        - pagination
      properties:
        elements:
          type: array
          items:
            $ref: "#/components/schemas/Comment"
        pagination:
          $ref: "#/components/schemas/Pagination"
    CommentInputs:
      type: object
      required:
        - authorName
        - text
      properties:
        authorName:
          type: string
        text:
          type: string
    Comment:
      type: object
      allOf:
        - $ref: "#/components/schemas/CommentInputs"
      required:
        - id
        - postDate
      properties:
        id:
          type: string
        permission:
          type: string
        authorAvatar:
          type: string
        postDate:
          type: string
          format: date-time
    CommentRef:
      type: object
      required:
        - id
      properties:
        id:
          type: string
        permission:
          type: string
    ApiError:
      type: object
      description: Error
      properties:
        name:
          type: string
          description: unique name of the error.
        correlation_id:
          type: string
          description: Internal identifier used for correlation purposes
        arguments:
          type: array
          description: The argument of the reason for the error.
          items:
            type: string
        details:
          description: Additional details for the error.
          type: array
          items:
            $ref: "#/components/schemas/ApiErrorDetail"
      required:
        - name
        - correlation_id
    ApiErrorDetail:
      type: object
      description: Additional details for the error.
      properties:
        value:
          type: string
          description: The value of the field that caused the error
        location:
          type: string
          description: The location of the field that caused the error.
        issue:
          type: string
          description: The reason for the error
        arguments:
          description: The argument of the reason for the error.
          type: array
          items:
            type: string
      required:
        - issue
    PaginatedFavoriteLists:
      type: object
      properties:
        elements:
          type: array
          items:
            $ref: "#/components/schemas/FavoriteList"
        pagination:
          $ref: "#/components/schemas/Pagination"
    PaginationResultChildFavoriteList:
      type: object
      properties:
        elements:
          type: array
          items:
            $ref: "#/components/schemas/ChildFavoriteList"
        pagination:
          $ref: "#/components/schemas/Pagination"
    PaginationResultFavoriteListMember:
      type: object
      properties:
        elements:
          type: array
          items:
            $ref: "#/components/schemas/FavoriteListMember"
        pagination:
          $ref: "#/components/schemas/Pagination"
    FavoriteList:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
          format: FavoriteListId
        name:
          type: string
        countChildren:
          type: integer
          format: int64
        countMembers:
          type: integer
          format: int64
    NewFavoriteList:
      type: object
      required:
        - name
      properties:
        name:
          type: string
    ChildFavoriteList:
      type: object
      required:
        - id
        - child
        - weight
      properties:
        id:
          type: string
          format: ChildFavoriteListId
        child:
          $ref: "#/components/schemas/FavoriteList"
        weight:
          type: number
          format: double
    NewChildFavoriteList:
      type: object
      required:
        - child
        - weight
      properties:
        child:
          $ref: "#/components/schemas/FavoriteList"
        weight:
          type: number
          format: double
    FavoriteListMember:
      type: object
      required:
        - id
        - name
        - email
        - weight
      properties:
        id:
          type: string
          format: FavoriteListMemberId
        name:
          type: string
        email:
          type: string
        weight:
          type: number
          format: double
    NewFavoriteListMember:
      type: object
      required:
        - name
        - email
        - weight
      properties:
        name:
          type: string
        email:
          type: string
        weight:
          type: number
          format: double