openapi: 3.1.0
info:
  title: Yandex Forms API as wrapped by ycli (unofficial)
  version: v1
  description: 'Derived from ycli''s own code, not published by Yandex: the requests ycli sends to Yandex
    Forms and the models it parses the replies into. It is only as complete as ycli; README''s "Against
    the published API" lists where the two differ. Generated by scripts/gen_openapi.py; do not edit by
    hand.'
servers:
- url: https://api.forms.yandex.net/v1
security:
- oauth: []
  organization: []
paths:
  /answers:
    get:
      operationId: answers_get
      tags:
      - answers
      x-ycli-operations:
      - answers.get
      x-ycli-effect: read
      parameters:
      - name: answer_id
        in: query
        schema:
          type: integer
      - name: answer_key
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswerDetails'
  /answers/integrations:
    get:
      operationId: answers_integrations_list
      tags:
      - answers
      x-ycli-operations:
      - answers.integrations_list
      x-ycli-effect: read
      parameters:
      - name: answer_id
        in: query
        schema:
          type: integer
      - name: answer_key
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AnswerIntegration'
  /files:
    delete:
      operationId: files_delete
      tags:
      - files
      x-ycli-operations:
      - files.delete
      x-ycli-effect: destructive
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileIn'
        x-ycli-body: typed
      responses:
        '200':
          description: ycli reads no body.
    get:
      operationId: files_download
      tags:
      - files
      x-ycli-operations:
      - files.download
      x-ycli-effect: read
      parameters:
      - name: download
        in: query
        schema:
          type: string
      - name: hash
        in: query
        schema:
          type: string
      - name: path
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Raw bytes.
          content:
            application/octet-stream: {}
  /notifications:
    get:
      operationId: notifications_list
      tags:
      - notifications
      x-ycli-operations:
      - notifications.list
      x-ycli-effect: read
      x-ycli-pagination: NextURLPagination
      parameters:
      - name: answer_id
        in: query
        schema:
          type: integer
      - name: created_gt
        in: query
        schema:
          type: string
      - name: created_lt
        in: query
        schema:
          type: string
      - name: finished_gt
        in: query
        schema:
          type: string
      - name: finished_lt
        in: query
        schema:
          type: string
      - name: hook_id
        in: query
        schema:
          type: integer
      - name: id
        in: query
        schema: {}
      - name: ordering
        in: query
        schema:
          type: string
      - name: page_size
        in: query
        schema:
          type: integer
      - name: status
        in: query
        schema:
          type: array
      - name: subscription_id
        in: query
        schema:
          type: integer
      - name: survey_id
        in: query
        schema:
          type: string
      - name: type
        in: query
        schema:
          type: string
      - name: visible
        in: query
        schema:
          type: boolean
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationPage'
  /notifications/{notification_id}:
    get:
      operationId: notifications_get
      tags:
      - notifications
      x-ycli-operations:
      - notifications.get
      x-ycli-effect: read
      parameters:
      - name: notification_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationDetails'
  /notifications/{notification_id}/cancel:
    post:
      operationId: notifications_cancel
      tags:
      - notifications
      x-ycli-operations:
      - notifications.cancel
      x-ycli-effect: write
      parameters:
      - name: notification_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationAction'
  /notifications/{notification_id}/restart:
    post:
      operationId: notifications_restart
      tags:
      - notifications
      x-ycli-operations:
      - notifications.restart
      x-ycli-effect: write
      parameters:
      - name: notification_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationAction'
  /notifications/{notification_id}/status:
    get:
      operationId: notifications_status_get
      tags:
      - notifications
      x-ycli-operations:
      - notifications.status_get
      x-ycli-effect: read
      parameters:
      - name: notification_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationStatus'
  /operations/{operation_id}:
    get:
      operationId: operations_get
      tags:
      - operations
      x-ycli-operations:
      - operations.get
      x-ycli-effect: read
      parameters:
      - name: operation_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResult'
  /surveys:
    get:
      operationId: surveys_list
      tags:
      - surveys
      x-ycli-operations:
      - surveys.list
      x-ycli-effect: read
      x-ycli-pagination: OffsetLimitPagination
      parameters:
      - name: favourite
        in: query
        schema:
          type: boolean
      - name: group
        in: query
        schema:
          type: string
      - name: limit
        in: query
        schema: {}
      - name: name
        in: query
        schema:
          type: string
      - name: offset
        in: query
        schema: {}
      - name: orderby
        in: query
        schema:
          type: string
      - name: ownership
        in: query
        schema:
          type: string
      - name: published
        in: query
        schema:
          type: boolean
      - name: show_all
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SurveysResponse'
    post:
      operationId: surveys_create
      tags:
      - surveys
      x-ycli-operations:
      - surveys.create
      x-ycli-effect: write
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SurveyCreate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Survey'
  /surveys/{survey_id}:
    delete:
      operationId: surveys_delete
      tags:
      - surveys
      x-ycli-operations:
      - surveys.delete
      x-ycli-effect: destructive
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ycli reads no body.
    get:
      operationId: surveys_get
      tags:
      - surveys
      x-ycli-operations:
      - surveys.get
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Survey'
    patch:
      operationId: surveys_modify
      tags:
      - surveys
      x-ycli-operations:
      - surveys.modify
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SurveyUpdate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Survey'
  /surveys/{survey_id}/access:
    get:
      operationId: access_get
      tags:
      - access
      x-ycli-operations:
      - access.get
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Permission'
    post:
      operationId: access_set
      tags:
      - access
      x-ycli-operations:
      - access.set
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessUpdate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Permission'
  /surveys/{survey_id}/access/grant:
    post:
      operationId: access_grant
      tags:
      - access
      x-ycli-operations:
      - access.grant
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessGrant'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Permission'
  /surveys/{survey_id}/access/revoke:
    post:
      operationId: access_revoke
      tags:
      - access
      x-ycli-operations:
      - access.revoke
      x-ycli-effect: destructive
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessRevoke'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Permission'
  /surveys/{survey_id}/answers:
    get:
      operationId: answers_list
      tags:
      - answers
      x-ycli-operations:
      - answers.list
      - answers.list_all
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: date_from
        in: query
        schema:
          type: string
      - name: date_to
        in: query
        schema:
          type: string
      - name: format
        in: query
        schema:
          type: string
      - name: id
        in: query
        schema: {}
      - name: ordering
        in: query
        schema:
          type: string
      - name: page_size
        in: query
        schema:
          type: integer
      - name: questions
        in: query
        schema:
          type: string
      - name: use_slugs
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswersResponse'
  /surveys/{survey_id}/answers/export:
    post:
      operationId: answers_export
      tags:
      - answers
      x-ycli-operations:
      - answers.export
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnswerExport'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OperationResult'
  /surveys/{survey_id}/answers/export-results:
    get:
      operationId: answers_download_export
      tags:
      - answers
      x-ycli-operations:
      - answers.download_export
      - answers.export_results
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: task_id
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Raw bytes.
          content:
            application/octet-stream: {}
  /surveys/{survey_id}/answers/{answer_id}:
    delete:
      operationId: answers_delete
      tags:
      - answers
      x-ycli-operations:
      - answers.delete
      x-ycli-effect: destructive
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: answer_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: ycli reads no body.
  /surveys/{survey_id}/answers/{answer_id}/restore:
    post:
      operationId: answers_restore
      tags:
      - answers
      x-ycli-operations:
      - answers.restore
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: answer_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: ycli reads no body.
  /surveys/{survey_id}/conditions:
    get:
      operationId: conditions_submit_list
      tags:
      - conditions
      x-ycli-operations:
      - conditions.submit_list
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConditionsResponse'
    patch:
      operationId: conditions_submit_set_operator
      tags:
      - conditions
      x-ycli-operations:
      - conditions.submit_set_operator
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json: {}
        x-ycli-body: untyped
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConditionsResponse'
    post:
      operationId: conditions_submit_create
      tags:
      - conditions
      x-ycli-operations:
      - conditions.submit_create
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConditionCreate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
  /surveys/{survey_id}/conditions/{condition_id}:
    delete:
      operationId: conditions_submit_delete
      tags:
      - conditions
      x-ycli-operations:
      - conditions.submit_delete
      x-ycli-effect: destructive
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: ycli reads no body.
    get:
      operationId: conditions_submit_get
      tags:
      - conditions
      x-ycli-operations:
      - conditions.submit_get
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
    patch:
      operationId: conditions_submit_modify
      tags:
      - conditions
      x-ycli-operations:
      - conditions.submit_modify
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConditionUpdate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
  /surveys/{survey_id}/files:
    post:
      operationId: files_upload
      tags:
      - files
      x-ycli-operations:
      - files.upload
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          multipart/form-data: {}
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileOut'
  /surveys/{survey_id}/files/verify:
    post:
      operationId: files_verify
      tags:
      - files
      x-ycli-operations:
      - files.verify
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/FileIn'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileOut'
  /surveys/{survey_id}/history:
    get:
      operationId: history_list
      tags:
      - history
      x-ycli-operations:
      - history.list
      x-ycli-effect: read
      x-ycli-pagination: CursorPagination
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: iteration_key
        in: query
        schema: {}
      - name: limit
        in: query
        schema:
          type: integer
      - name: ordering
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoryPage'
  /surveys/{survey_id}/hooks:
    get:
      operationId: hooks_list
      tags:
      - hooks
      x-ycli-operations:
      - hooks.list
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Hook'
    post:
      operationId: hooks_create
      tags:
      - hooks
      x-ycli-operations:
      - hooks.create
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HookCreate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Hook'
  /surveys/{survey_id}/hooks/{hook_id}:
    delete:
      operationId: hooks_delete
      tags:
      - hooks
      x-ycli-operations:
      - hooks.delete
      x-ycli-effect: destructive
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: ycli reads no body.
    get:
      operationId: hooks_get
      tags:
      - hooks
      x-ycli-operations:
      - hooks.get
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Hook'
    patch:
      operationId: hooks_modify
      tags:
      - hooks
      x-ycli-operations:
      - hooks.modify
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HookUpdate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Hook'
  /surveys/{survey_id}/hooks/{hook_id}/conditions:
    get:
      operationId: conditions_hook_list
      tags:
      - conditions
      x-ycli-operations:
      - conditions.hook_list
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConditionsResponse'
    patch:
      operationId: conditions_hook_set_operator
      tags:
      - conditions
      x-ycli-operations:
      - conditions.hook_set_operator
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json: {}
        x-ycli-body: untyped
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConditionsResponse'
    post:
      operationId: conditions_hook_create
      tags:
      - conditions
      x-ycli-operations:
      - conditions.hook_create
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConditionCreate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
  /surveys/{survey_id}/hooks/{hook_id}/conditions/{condition_id}:
    delete:
      operationId: conditions_hook_delete
      tags:
      - conditions
      x-ycli-operations:
      - conditions.hook_delete
      x-ycli-effect: destructive
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: ycli reads no body.
    get:
      operationId: conditions_hook_get
      tags:
      - conditions
      x-ycli-operations:
      - conditions.hook_get
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
    patch:
      operationId: conditions_hook_modify
      tags:
      - conditions
      x-ycli-operations:
      - conditions.hook_modify
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConditionUpdate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
  /surveys/{survey_id}/hooks/{hook_id}/subscriptions:
    get:
      operationId: subscriptions_list
      tags:
      - subscriptions
      x-ycli-operations:
      - subscriptions.list
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  oneOf:
                  - $ref: '#/components/schemas/EmailSubscription'
                  - $ref: '#/components/schemas/TrackerSubscription'
                  - $ref: '#/components/schemas/TrackerCommentSubscription'
                  - $ref: '#/components/schemas/WikiSubscription'
                  - $ref: '#/components/schemas/JsonRpcSubscription'
                  - $ref: '#/components/schemas/HttpSubscription'
                  - $ref: '#/components/schemas/FunctionSubscription'
                  discriminator:
                    propertyName: type
                    mapping:
                      email: '#/components/schemas/EmailSubscription'
                      tracker: '#/components/schemas/TrackerSubscription'
                      tracker_comment: '#/components/schemas/TrackerCommentSubscription'
                      wiki: '#/components/schemas/WikiSubscription'
                      jsonrpc: '#/components/schemas/JsonRpcSubscription'
                      http: '#/components/schemas/HttpSubscription'
                      function: '#/components/schemas/FunctionSubscription'
    post:
      operationId: subscriptions_create
      tags:
      - subscriptions
      x-ycli-operations:
      - subscriptions.create
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/EmailSubscription'
              - $ref: '#/components/schemas/TrackerSubscription'
              - $ref: '#/components/schemas/TrackerCommentSubscription'
              - $ref: '#/components/schemas/WikiSubscription'
              - $ref: '#/components/schemas/JsonRpcSubscription'
              - $ref: '#/components/schemas/HttpSubscription'
              - $ref: '#/components/schemas/FunctionSubscription'
              discriminator:
                propertyName: type
                mapping:
                  email: '#/components/schemas/EmailSubscription'
                  tracker: '#/components/schemas/TrackerSubscription'
                  tracker_comment: '#/components/schemas/TrackerCommentSubscription'
                  wiki: '#/components/schemas/WikiSubscription'
                  jsonrpc: '#/components/schemas/JsonRpcSubscription'
                  http: '#/components/schemas/HttpSubscription'
                  function: '#/components/schemas/FunctionSubscription'
        x-ycli-body: typed
      responses:
        '200':
          description: ycli reads no body.
  /surveys/{survey_id}/hooks/{hook_id}/subscriptions/{subscription_id}:
    delete:
      operationId: subscriptions_delete
      tags:
      - subscriptions
      x-ycli-operations:
      - subscriptions.delete
      x-ycli-effect: destructive
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      - name: subscription_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: ycli reads no body.
    get:
      operationId: subscriptions_get
      tags:
      - subscriptions
      x-ycli-operations:
      - subscriptions.get
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      - name: subscription_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: ycli reads no body.
    patch:
      operationId: subscriptions_modify
      tags:
      - subscriptions
      x-ycli-operations:
      - subscriptions.modify
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      - name: subscription_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/EmailSubscription'
              - $ref: '#/components/schemas/TrackerSubscription'
              - $ref: '#/components/schemas/TrackerCommentSubscription'
              - $ref: '#/components/schemas/WikiSubscription'
              - $ref: '#/components/schemas/JsonRpcSubscription'
              - $ref: '#/components/schemas/HttpSubscription'
              - $ref: '#/components/schemas/FunctionSubscription'
              discriminator:
                propertyName: type
                mapping:
                  email: '#/components/schemas/EmailSubscription'
                  tracker: '#/components/schemas/TrackerSubscription'
                  tracker_comment: '#/components/schemas/TrackerCommentSubscription'
                  wiki: '#/components/schemas/WikiSubscription'
                  jsonrpc: '#/components/schemas/JsonRpcSubscription'
                  http: '#/components/schemas/HttpSubscription'
                  function: '#/components/schemas/FunctionSubscription'
        x-ycli-body: typed
      responses:
        '200':
          description: ycli reads no body.
  /surveys/{survey_id}/hooks/{hook_id}/subscriptions/{subscription_id}/attachment:
    post:
      operationId: subscriptions_attach
      tags:
      - subscriptions
      x-ycli-operations:
      - subscriptions.attach
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: hook_id
        in: path
        required: true
        schema:
          type: integer
      - name: subscription_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          multipart/form-data: {}
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileOut'
  /surveys/{survey_id}/images:
    post:
      operationId: images_upload
      tags:
      - images
      x-ycli-operations:
      - images.upload
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          multipart/form-data: {}
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Image'
  /surveys/{survey_id}/images/clone:
    post:
      operationId: images_clone
      tags:
      - images
      x-ycli-operations:
      - images.clone
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageClone'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Image'
  /surveys/{survey_id}/keysets:
    get:
      operationId: keysets_list
      tags:
      - keysets
      x-ycli-operations:
      - keysets.list
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Keyset'
    post:
      operationId: keysets_create
      tags:
      - keysets
      x-ycli-operations:
      - keysets.create
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KeysetCreate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Keyset'
  /surveys/{survey_id}/keysets/{keyset_id}:
    delete:
      operationId: keysets_delete
      tags:
      - keysets
      x-ycli-operations:
      - keysets.delete
      x-ycli-effect: destructive
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: keyset_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: ycli reads no body.
    get:
      operationId: keysets_get
      tags:
      - keysets
      x-ycli-operations:
      - keysets.get
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: keyset_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Keyset'
    patch:
      operationId: keysets_modify
      tags:
      - keysets
      x-ycli-operations:
      - keysets.modify
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: keyset_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KeysetUpdate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Keyset'
  /surveys/{survey_id}/keysets/{keyset_id}/download:
    get:
      operationId: keysets_download
      tags:
      - keysets
      x-ycli-operations:
      - keysets.download
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: keyset_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Raw bytes.
          content:
            application/octet-stream: {}
  /surveys/{survey_id}/pages/{page_id}/conditions:
    get:
      operationId: conditions_page_list
      tags:
      - conditions
      x-ycli-operations:
      - conditions.page_list
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: page_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConditionsResponse'
    patch:
      operationId: conditions_page_set_operator
      tags:
      - conditions
      x-ycli-operations:
      - conditions.page_set_operator
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: page_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json: {}
        x-ycli-body: untyped
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConditionsResponse'
    post:
      operationId: conditions_page_create
      tags:
      - conditions
      x-ycli-operations:
      - conditions.page_create
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: page_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConditionCreate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
  /surveys/{survey_id}/pages/{page_id}/conditions/{condition_id}:
    delete:
      operationId: conditions_page_delete
      tags:
      - conditions
      x-ycli-operations:
      - conditions.page_delete
      x-ycli-effect: destructive
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: page_id
        in: path
        required: true
        schema:
          type: integer
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: ycli reads no body.
    get:
      operationId: conditions_page_get
      tags:
      - conditions
      x-ycli-operations:
      - conditions.page_get
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: page_id
        in: path
        required: true
        schema:
          type: integer
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
    patch:
      operationId: conditions_page_modify
      tags:
      - conditions
      x-ycli-operations:
      - conditions.page_modify
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: page_id
        in: path
        required: true
        schema:
          type: integer
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConditionUpdate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
  /surveys/{survey_id}/publish:
    post:
      operationId: surveys_publish
      tags:
      - surveys
      x-ycli-operations:
      - surveys.publish
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ycli reads no body.
  /surveys/{survey_id}/questions:
    get:
      operationId: questions_list
      tags:
      - questions
      x-ycli-operations:
      - questions.list
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionsResponse'
    post:
      operationId: questions_create
      tags:
      - questions
      x-ycli-operations:
      - questions.create
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/StringQuestion'
              - $ref: '#/components/schemas/BooleanQuestion'
              - $ref: '#/components/schemas/IntegerQuestion'
              - $ref: '#/components/schemas/FileQuestion'
              - $ref: '#/components/schemas/CommentQuestion'
              - $ref: '#/components/schemas/DateQuestion'
              - $ref: '#/components/schemas/DateRangeQuestion'
              - $ref: '#/components/schemas/PaymentQuestion'
              - $ref: '#/components/schemas/EnumQuestion'
              - $ref: '#/components/schemas/SuggestQuestion'
              - $ref: '#/components/schemas/MatrixQuestion'
              - $ref: '#/components/schemas/SeriesQuestion'
              discriminator:
                propertyName: type
                mapping:
                  string: '#/components/schemas/StringQuestion'
                  boolean: '#/components/schemas/BooleanQuestion'
                  integer: '#/components/schemas/IntegerQuestion'
                  file: '#/components/schemas/FileQuestion'
                  comment: '#/components/schemas/CommentQuestion'
                  date: '#/components/schemas/DateQuestion'
                  daterange: '#/components/schemas/DateRangeQuestion'
                  payment: '#/components/schemas/PaymentQuestion'
                  enum: '#/components/schemas/EnumQuestion'
                  suggest: '#/components/schemas/SuggestQuestion'
                  matrix: '#/components/schemas/MatrixQuestion'
                  series: '#/components/schemas/SeriesQuestion'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Question'
  /surveys/{survey_id}/questions/{question_id}:
    delete:
      operationId: questions_delete
      tags:
      - questions
      x-ycli-operations:
      - questions.delete
      x-ycli-effect: destructive
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: question_id
        in: path
        required: true
        schema:
          type: string
      - name: force
        in: query
        schema:
          type: string
      responses:
        '200':
          description: ycli reads no body.
    get:
      operationId: questions_get
      tags:
      - questions
      x-ycli-operations:
      - questions.get
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: question_id
        in: path
        required: true
        schema:
          type: string
      - name: with_slugs
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Question'
    patch:
      operationId: questions_modify
      tags:
      - questions
      x-ycli-operations:
      - questions.modify
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: question_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/StringQuestion'
              - $ref: '#/components/schemas/BooleanQuestion'
              - $ref: '#/components/schemas/IntegerQuestion'
              - $ref: '#/components/schemas/FileQuestion'
              - $ref: '#/components/schemas/CommentQuestion'
              - $ref: '#/components/schemas/DateQuestion'
              - $ref: '#/components/schemas/DateRangeQuestion'
              - $ref: '#/components/schemas/PaymentQuestion'
              - $ref: '#/components/schemas/EnumQuestion'
              - $ref: '#/components/schemas/SuggestQuestion'
              - $ref: '#/components/schemas/MatrixQuestion'
              - $ref: '#/components/schemas/SeriesQuestion'
              discriminator:
                propertyName: type
                mapping:
                  string: '#/components/schemas/StringQuestion'
                  boolean: '#/components/schemas/BooleanQuestion'
                  integer: '#/components/schemas/IntegerQuestion'
                  file: '#/components/schemas/FileQuestion'
                  comment: '#/components/schemas/CommentQuestion'
                  date: '#/components/schemas/DateQuestion'
                  daterange: '#/components/schemas/DateRangeQuestion'
                  payment: '#/components/schemas/PaymentQuestion'
                  enum: '#/components/schemas/EnumQuestion'
                  suggest: '#/components/schemas/SuggestQuestion'
                  matrix: '#/components/schemas/MatrixQuestion'
                  series: '#/components/schemas/SeriesQuestion'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Question'
  /surveys/{survey_id}/questions/{question_id}/conditions:
    get:
      operationId: conditions_question_list
      tags:
      - conditions
      x-ycli-operations:
      - conditions.question_list
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: question_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConditionsResponse'
    patch:
      operationId: conditions_question_set_operator
      tags:
      - conditions
      x-ycli-operations:
      - conditions.question_set_operator
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: question_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json: {}
        x-ycli-body: untyped
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConditionsResponse'
    post:
      operationId: conditions_question_create
      tags:
      - conditions
      x-ycli-operations:
      - conditions.question_create
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: question_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConditionCreate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
  /surveys/{survey_id}/questions/{question_id}/conditions/{condition_id}:
    delete:
      operationId: conditions_question_delete
      tags:
      - conditions
      x-ycli-operations:
      - conditions.question_delete
      x-ycli-effect: destructive
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: question_id
        in: path
        required: true
        schema:
          type: string
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: ycli reads no body.
    get:
      operationId: conditions_question_get
      tags:
      - conditions
      x-ycli-operations:
      - conditions.question_get
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: question_id
        in: path
        required: true
        schema:
          type: string
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
    patch:
      operationId: conditions_question_modify
      tags:
      - conditions
      x-ycli-operations:
      - conditions.question_modify
      x-ycli-effect: idempotent_write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: question_id
        in: path
        required: true
        schema:
          type: string
      - name: condition_id
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConditionUpdate'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Condition'
  /surveys/{survey_id}/questions/{question_id}/move:
    post:
      operationId: questions_move
      tags:
      - questions
      x-ycli-operations:
      - questions.move
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      - name: question_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuestionMove'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionMoveResult'
  /surveys/{survey_id}/show-errors:
    get:
      operationId: notifications_errors_list
      tags:
      - notifications
      x-ycli-operations:
      - notifications.errors_list
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: integer
  /surveys/{survey_id}/unpublish:
    post:
      operationId: surveys_unpublish
      tags:
      - surveys
      x-ycli-operations:
      - surveys.unpublish
      x-ycli-effect: write
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ycli reads no body.
  /surveys/{survey_id}/variables:
    get:
      operationId: variables_list
      tags:
      - variables
      x-ycli-operations:
      - variables.list
      x-ycli-effect: read
      parameters:
      - name: survey_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VariableInfo'
  /surveys/{survey}/form:
    get:
      operationId: filling_get
      tags:
      - filling
      x-ycli-operations:
      - filling.get
      x-ycli-effect: read
      parameters:
      - name: survey
        in: path
        required: true
        schema:
          type: string
      - name: key
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FillableForm'
    post:
      operationId: filling_submit
      tags:
      - filling
      x-ycli-operations:
      - filling.submit
      x-ycli-effect: write
      parameters:
      - name: survey
        in: path
        required: true
        schema:
          type: string
      - name: dry_run
        in: query
        schema:
          type: string
      - name: key
        in: query
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitBody'
        x-ycli-body: typed
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubmitResult'
  /surveys/{survey}/suggest:
    get:
      operationId: filling_suggest
      tags:
      - filling
      x-ycli-operations:
      - filling.suggest
      x-ycli-effect: read
      parameters:
      - name: survey
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: query
        schema:
          type: string
      - name: parent_id
        in: query
        schema:
          type: string
      - name: question
        in: query
        schema:
          type: string
      - name: text
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Suggestion'
  /users/me:
    get:
      operationId: me_get
      tags:
      - me
      x-ycli-operations:
      - me.get
      x-ycli-effect: read
      responses:
        '200':
          description: Parsed by ycli.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
components:
  securitySchemes:
    oauth:
      type: apiKey
      in: header
      name: Authorization
      description: '`OAuth <token>`'
    organization:
      type: apiKey
      in: header
      name: X-Org-Id
  schemas:
    AccessGrant:
      description: "Typed body for ``POST /surveys/{id}/access/grant``: add a user or a group to an action.\n\
        \nUnset fields are dropped before the request is sent.\n\nExamples:\n    >>> AccessGrant(action=\"\
        change\", user=UserIdentity(uid=\"7\")).model_dump(exclude_none=True)\n    {'action': 'change',\
        \ 'user': {'uid': '7'}}"
      properties:
        action:
          description: 'Action: change or submit.'
          enum:
          - change
          - submit
          title: Action
          type: string
        user:
          anyOf:
          - $ref: '#/components/schemas/UserIdentity'
          - type: 'null'
          default: null
          description: The user to add.
        group:
          anyOf:
          - $ref: '#/components/schemas/GroupIdentity'
          - type: 'null'
          default: null
          description: The group to add.
      required:
      - action
      title: AccessGrant
      type: object
    AccessRevoke:
      description: "Typed body for ``POST /surveys/{id}/access/revoke``: remove a user or a group.\n\n\
        Examples:\n    >>> AccessRevoke(action=\"submit\", group=GroupIdentity(src=\"dir\", id=\"5\")).group.id\n\
        \    '5'"
      properties:
        action:
          description: 'Action: change or submit.'
          enum:
          - change
          - submit
          title: Action
          type: string
        user:
          anyOf:
          - $ref: '#/components/schemas/UserIdentity'
          - type: 'null'
          default: null
          description: The user to add.
        group:
          anyOf:
          - $ref: '#/components/schemas/GroupIdentity'
          - type: 'null'
          default: null
          description: The group to add.
      required:
      - action
      title: AccessRevoke
      type: object
    AccessUpdate:
      description: "Typed body for ``POST /surveys/{id}/access``: set one action's access level.\n\nExamples:\n\
        \    >>> AccessUpdate(action=\"submit\", access=\"common\").model_dump()\n    {'action': 'submit',\
        \ 'access': 'common'}"
      properties:
        action:
          description: 'Action: change or submit.'
          enum:
          - change
          - submit
          title: Action
          type: string
        access:
          description: 'Access level: owner, restricted, common or public.'
          enum:
          - owner
          - restricted
          - common
          - public
          title: Access
          type: string
      required:
      - action
      - access
      title: AccessUpdate
      type: object
    Answer:
      description: "A single form response (``…/answers`` → ``answers[]``).\n\n``data`` is **positional**,\
        \ aligned to ``columns``; each element is a\n``{\"value\": …}`` dict or ``null``. Passed through\
        \ verbatim as ``Any``\n(``value`` is a ``str`` or ``list[str]``). Asked for in the ``raw`` format,\
        \ the reply has\nno ``columns`` and ``data`` is an object keyed by question.\n\nExamples:\n  \
        \  >>> Answer.model_validate({\"id\": 9, \"created\": \"2026-01-01\", \"data\": [{\"value\": \"\
        x\"}]}).data\n    [{'value': 'x'}]"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          title: Id
        created:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Created
        uid:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Passport uid of the respondent (the ``raw`` format only).
          title: Uid
        data:
          anyOf:
          - items: {}
            type: array
          - additionalProperties: true
            type: object
          description: Cells aligned to ``columns``; in the ``raw`` format, an object by question.
          title: Data
      title: Answer
      type: object
    AnswerDetails:
      description: "One full form response (``GET /v1/answers?answer_id=…`` / ``?answer_key=…``).\n\n\
        Unlike the positional ``data`` of the listing's :class:`Answer`, here each ``data``\nitem is a\
        \ self-describing question record (``{id, label, type, value, …}``) — passed\nthrough verbatim,\
        \ as ``value`` ranges over eight shapes. ``quiz`` (test results) is\nalso passed through verbatim\
        \ when present.\n\nExamples:\n    >>> AnswerDetails.model_validate(\n    ...     {\"id\": 9, \"\
        created\": \"2026-01-01\", \"survey\": {\"id\": \"686d\", \"name\": \"F\"}}\n    ... ).survey.id\n\
        \    '686d'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Answer id (integer).
          title: Id
        created:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: ISO-8601 submission timestamp.
          title: Created
        survey:
          anyOf:
          - $ref: '#/components/schemas/AnswerSurveyRef'
          - type: 'null'
          default: null
          description: The form this answer belongs to.
        started:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: ISO-8601 time the respondent began filling the form.
          title: Started
        quiz:
          default: null
          description: Quiz (test) results, when the form is a quiz.
          title: Quiz
        data:
          description: Per-question answer records ({id, label, type, value, …}), verbatim.
          items: {}
          title: Data
          type: array
      title: AnswerDetails
      type: object
    AnswerExport:
      description: "Typed request body for ``POST /v1/surveys/{id}/answers/export`` (start an async export).\n\
        \nEvery field is optional — the API defaults ``format`` to ``xlsx`` and ``upload`` to\n``default``.\
        \ Unset (``None``) fields are dropped before the request is sent, so a bare\n``AnswerExport()``\
        \ exports every answer of the form in ``xlsx``.\n\nExamples:\n    >>> AnswerExport(format=\"csv\"\
        , limit=100).model_dump(exclude_none=True)\n    {'format': 'csv', 'limit': 100}"
      properties:
        format:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Export format — ``csv`` or ``xlsx`` (API default ``xlsx``).
          title: Format
        upload:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Where to upload the result — ``default`` or ``disk`` (Yandex Disk).
          title: Upload
        started_at:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: ISO-8601 start of the answer date range (inclusive).
          title: Started At
        finished_at:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: ISO-8601 end of the answer date range (inclusive).
          title: Finished At
        pks:
          anyOf:
          - items:
              type: integer
            type: array
          - type: 'null'
          default: null
          description: Explicit answer ids to export (omit to export all).
          title: Pks
        columns:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          default: null
          description: Question/column slugs to include (omit to export all columns).
          title: Columns
        limit:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Maximum number of answers to export.
          title: Limit
        upload_files:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Also export respondents' uploaded files to Yandex Disk.
          title: Upload Files
      title: AnswerExport
      type: object
    AnswerIntegration:
      description: "One integration run an answer triggered (``GET /answers/integrations`` item).\n\n\
        Which of the type-specific fields is set depends on ``type``: ``to_address`` (email),\n``wiki_page``\
        \ and ``link`` (wiki), ``issue_key`` and ``link`` (tracker), ``url`` (http,\njsonrpc) or ``function_id``\
        \ (function).\n\nExamples:\n    >>> AnswerIntegration.model_validate(\n    ...     {\"id\": 4,\
        \ \"status\": \"success\", \"type\": \"tracker\", \"issue_key\": \"DE-7\"}\n    ... ).issue_key\n\
        \    'DE-7'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Integration id.
          title: Id
        status:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Run state: pending, success, error or canceled.'
          title: Status
        message:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Result message of the run.
          title: Message
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Integration type: email, tracker, wiki, jsonrpc, http, post, put or function.'
          title: Type
        to_address:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Recipient address (email).
          title: To Address
        wiki_page:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Wiki page supertag (wiki).
          title: Wiki Page
        link:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Link to the wiki page or tracker issue.
          title: Link
        issue_key:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Tracker issue key (tracker).
          title: Issue Key
        url:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: URL that was called (http, jsonrpc).
          title: Url
        function_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Cloud function id (function).
          title: Function Id
      title: AnswerIntegration
      type: object
    AnswerSurveyRef:
      description: "The form a single answer belongs to (``GET /answers`` → ``survey``).\n\nExamples:\n\
        \    >>> AnswerSurveyRef.model_validate({\"id\": \"686d0a1b\", \"name\": \"Feedback\"}).name\n\
        \    'Feedback'"
      properties:
        id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form id (hex ObjectId).
          title: Id
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form name.
          title: Name
      title: AnswerSurveyRef
      type: object
    AnswersResponse:
      description: "Envelope for ``GET …/answers`` — ``{columns, answers, next}``.\n\n``next`` is ``{\"\
        next_url\": …}`` or ``null`` (a pagination cursor), passed\nthrough as ``Any``.\n\nExamples:\n\
        \    >>> AnswersResponse.model_validate({\"columns\": [], \"answers\": [], \"next\": None}).answers\n\
        \    []"
      properties:
        columns:
          items:
            $ref: '#/components/schemas/Column'
          title: Columns
          type: array
        answers:
          items:
            $ref: '#/components/schemas/Answer'
          title: Answers
          type: array
        next:
          default: null
          title: Next
      title: AnswersResponse
      type: object
    AttachmentQuestions:
      description: "File questions whose uploads a subscription attaches.\n\nExamples:\n    >>> AttachmentQuestions(all=True).all\n\
        \    True"
      properties:
        all:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Attach the files of every question.
          title: All
        items:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          default: null
          description: Slugs of the file questions.
          title: Items
      title: AttachmentQuestions
      type: object
    BooleanQuestion:
      description: "Yes/no (single checkbox) answer.\n\nExamples:\n    >>> BooleanQuestion(label=\"Agree\"\
        , initial=False).type\n    'boolean'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: boolean
          default: boolean
          description: 'Discriminator: boolean.'
          title: Type
          type: string
        initial:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Default boolean value.
          title: Initial
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules (required, external).
          title: Validators
      title: BooleanQuestion
      type: object
    Column:
      description: "An answers-table column descriptor (``…/answers`` → ``columns[]``).\n\nExamples:\n\
        \    >>> Column.model_validate({\"id\": 1, \"slug\": \"s\", \"type\": \"string\", \"text\": \"\
        T\"}).text\n    'T'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          title: Id
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Slug
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Type
        text:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Text
        has_scores:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          title: Has Scores
      title: Column
      type: object
    CommentQuestion:
      description: "A static text / header block (no answer collected).\n\nExamples:\n    >>> CommentQuestion(label=\"\
        Section A\", header=True).header\n    True"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: comment
          default: comment
          description: 'Discriminator: comment.'
          title: Type
          type: string
        header:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Render the text as a section header rather than body copy.
          title: Header
      title: CommentQuestion
      type: object
    Condition:
      description: "A display-condition group (the question shows only when the group matches).\n\nExamples:\n\
        \    >>> Condition(operator=\"and\", items=[ConditionItem(question=\"q1\")]).operator\n    'and'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Condition group ID.
          title: Id
        operator:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Operator combining the group's items.
          title: Operator
        items:
          anyOf:
          - items:
              $ref: '#/components/schemas/ConditionItem'
            type: array
          - type: 'null'
          default: null
          description: Clauses evaluated within this group.
          title: Items
      title: Condition
      type: object
    ConditionCreate:
      description: "Typed body for ``POST …/conditions`` — one new condition group.\n\nThe API requires\
        \ both fields: ``operator`` joins the clauses WITHIN the group and\n``items`` must hold at least\
        \ one clause. Unset optional clause fields are dropped before\nthe request is sent.\n\nExamples:\n\
        \    >>> ConditionCreate(\n    ...     operator=\"and\", items=[ConditionItemWrite(type=\"language\"\
        , condition=\"eq\")]\n    ... ).operator\n    'and'"
      properties:
        operator:
          description: 'Boolean operator joining the clauses within the group: and / or.'
          enum:
          - and
          - or
          title: Operator
          type: string
        items:
          description: Clauses of the group (at least one).
          items:
            $ref: '#/components/schemas/ConditionItemWrite'
          minItems: 1
          title: Items
          type: array
      required:
      - operator
      - items
      title: ConditionCreate
      type: object
    ConditionItem:
      description: "One clause inside a display-condition group.\n\nExamples:\n    >>> ConditionItem(type=\"\
        question\", condition=\"eq\", question=\"q1\", value=\"yes\").value\n    'yes'"
      properties:
        condition:
          anyOf:
          - enum:
            - eq
            - neq
            - lt
            - gt
            type: string
          - type: 'null'
          default: null
          description: 'Comparison operator: eq, neq, lt, gt.'
          title: Condition
        operator:
          anyOf:
          - enum:
            - and
            - or
            type: string
          - type: 'null'
          default: null
          description: 'Boolean operator joining this clause to the next: and / or.'
          title: Operator
        type:
          anyOf:
          - enum:
            - question
            - language
            - origin
            - quiz
            type: string
          - type: 'null'
          default: null
          description: 'Clause subject: question, language, origin or quiz.'
          title: Type
        question:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Slug of the question this clause tests (for type=question).
          title: Question
        value:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Value the clause compares against.
          title: Value
      title: ConditionItem
      type: object
    ConditionItemWrite:
      description: "One clause of a create/modify condition-group body (the API's ``ConditionItemIn``).\n\
        \nUnlike the lenient read ``ConditionItem``, the write clause enforces the input schema:\n``type``\
        \ and ``condition`` are required, ``value`` is capped at 100 characters (a string\neven for ``lt``/``gt``),\
        \ and there is no per-clause ``operator``.\n\nExamples:\n    >>> ConditionItemWrite(type=\"question\"\
        , condition=\"eq\", question=\"q1\", value=\"y\").value\n    'y'"
      properties:
        type:
          description: 'Clause subject: question, language, origin or quiz.'
          enum:
          - question
          - language
          - origin
          - quiz
          title: Type
          type: string
        condition:
          description: 'Comparison operator: eq, neq, lt, gt.'
          enum:
          - eq
          - neq
          - lt
          - gt
          title: Condition
          type: string
        question:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Slug of the question the clause tests (required for type=question).
          title: Question
        value:
          anyOf:
          - maxLength: 100
            type: string
          - type: 'null'
          default: null
          description: Value the clause compares against (string, max 100 chars).
          title: Value
      required:
      - type
      - condition
      title: ConditionItemWrite
      type: object
    ConditionUpdate:
      description: "Typed body for ``PATCH …/conditions/{condition_id}`` — a FULL replacement.\n\nSame\
        \ shape as :class:`ConditionCreate`: despite the PATCH verb the API validates the body\nas a complete\
        \ group (``operator`` and at least one clause are both required); there is no\npartial update,\
        \ and the group ``id`` is never sent.\n\nExamples:\n    >>> ConditionUpdate(\n    ...     operator=\"\
        or\", items=[ConditionItemWrite(type=\"origin\", condition=\"neq\")]\n    ... ).operator\n   \
        \ 'or'"
      properties:
        operator:
          description: 'Boolean operator joining the clauses within the group: and / or.'
          enum:
          - and
          - or
          title: Operator
          type: string
        items:
          description: Clauses of the group (at least one).
          items:
            $ref: '#/components/schemas/ConditionItemWrite'
          minItems: 1
          title: Items
          type: array
      required:
      - operator
      - items
      title: ConditionUpdate
      type: object
    ConditionsResponse:
      description: "The ``{operator, items}`` envelope of a target's condition groups.\n\nReturned by\
        \ every ``*_list`` and ``*_set_operator`` operation. Unlike the transport\nenvelopes that the\
        \ resource conventions flatten, ``operator`` here is data (the boolean\noperator BETWEEN the groups),\
        \ so the envelope itself is the public return type.\n\nExamples:\n    >>> ConditionsResponse.model_validate(\n\
        \    ...     {\"operator\": \"and\", \"items\": [{\"id\": 1, \"operator\": \"or\", \"items\":\
        \ []}]}\n    ... ).items[0].id\n    1"
      properties:
        operator:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Boolean operator joining the condition groups: and / or.'
          title: Operator
        items:
          description: The target's condition groups.
          items:
            $ref: '#/components/schemas/Condition'
          title: Items
          type: array
      title: ConditionsResponse
      type: object
    DataSourceParam:
      description: "One parameter of a hint- or suggest-data-source descriptor.\n\nExamples:\n    >>>\
        \ DataSourceParam(type=\"org\", value=\"42\").value\n    '42'"
      properties:
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Parameter name/type.
          title: Type
        value:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Parameter value.
          title: Value
      title: DataSourceParam
      type: object
    DateQuestion:
      description: "Single-date answer, optionally bounded by min/max date validators.\n\nExamples:\n\
        \    >>> DateQuestion(label=\"Born\").type\n    'date'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: date
          default: date
          description: 'Discriminator: date.'
          title: Type
          type: string
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules (required, min/max date, external).
          title: Validators
      title: DateQuestion
      type: object
    DateRangeQuestion:
      description: "Date-range (from/to) answer, optionally bounded by min/max date validators.\n\nExamples:\n\
        \    >>> DateRangeQuestion(label=\"Period\").type\n    'daterange'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: daterange
          default: daterange
          description: 'Discriminator: daterange.'
          title: Type
          type: string
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules (required, min/max date, external).
          title: Validators
      title: DateRangeQuestion
      type: object
    EmailSubscription:
      description: "Send an e-mail.\n\nExamples:\n    >>> EmailSubscription(email_to_address=\"team@example.com\"\
        ).type\n    'email'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Subscription id (integer, read only).
          title: Id
        active:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the integration runs.
          title: Active
        follow:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Notify the form's followers about the run.
          title: Follow
        variables:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionVariable'
            type: array
          - type: 'null'
          default: null
          description: Variables referenced from the subscription's texts.
          title: Variables
        type:
          const: email
          default: email
          description: 'Discriminator: email.'
          title: Type
          type: string
        subject:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Message subject (max 255).
          title: Subject
        body:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Message body.
          title: Body
        email_to_address:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Recipient (max 255).
          title: Email To Address
        email_from_title:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Sender name (max 255).
          title: Email From Title
        headers:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionHeader'
            type: array
          - type: 'null'
          default: null
          description: Extra message headers.
          title: Headers
        attachments:
          anyOf:
          - $ref: '#/components/schemas/SubscriptionAttachments'
          - type: 'null'
          default: null
          description: Files to attach.
      title: EmailSubscription
      type: object
    EnumQuestion:
      description: "Choice from a fixed option list (radio/checkbox/dropdown/stars/onerow).\n\nExamples:\n\
        \    >>> EnumQuestion(label=\"Pick\", widget=\"radio\", items=[QuestionEnumItem(label=\"A\")]).widget\n\
        \    'radio'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: enum
          default: enum
          description: 'Discriminator: enum.'
          title: Type
          type: string
        widget:
          anyOf:
          - enum:
            - radio
            - checkbox
            - dropdown
            - stars
            - onerow
            type: string
          - type: 'null'
          default: null
          description: 'Display style: radio, checkbox, dropdown, stars, onerow.'
          title: Widget
        items:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionEnumItem'
            type: array
          - type: 'null'
          default: null
          description: The selectable options.
          title: Items
        initial:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionEnumItem'
            type: array
          - type: 'null'
          default: null
          description: Pre-selected options.
          title: Initial
        modify_choices:
          anyOf:
          - enum:
            - ''
            - natural
            - sort
            - shuffle
            type: string
          - type: 'null'
          default: null
          description: 'Option ordering: '''' (as given), natural, sort, shuffle.'
          title: Modify Choices
        show_first:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Show the first value (dropdown widget).
          title: Show First
        has_quiz:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Grade the choice as a quiz item.
          title: Has Quiz
        quiz_comment:
          anyOf:
          - $ref: '#/components/schemas/QuestionQuizComment'
          - type: 'null'
          default: null
          description: Comments shown for a right and a wrong quiz answer.
        show_suggest:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Offer the options as suggestions while the respondent types.
          title: Show Suggest
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules (required, single, external).
          title: Validators
      title: EnumQuestion
      type: object
    FileIn:
      description: "A stored-file reference by ``path`` / ``url`` — the ``verify`` / ``delete`` request\
        \ item.\n\nBoth fields are optional, but at least one must identify the file; ``path`` comes from\
        \ the\n``upload`` response.\n\nExamples:\n    >>> FileIn(path=\"p\", url=\"https://…\").path\n\
        \    'p'"
      properties:
        path:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: File download path.
          title: Path
        url:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: File download URL.
          title: Url
      title: FileIn
      type: object
    FileOut:
      description: "A file stored for form filling (``upload`` result and each ``verify`` item).\n\nA\
        \ ``File``-type form field is filled by first uploading the file here; the returned\n``path``\
        \ / ``url`` then reference it in a form response. ``check_status`` reports the\nantivirus/upload\
        \ scan.\n\nExamples:\n    >>> FileOut.model_validate(\n    ...     {\"name\": \"cv.pdf\", \"path\"\
        : \"p\", \"size\": 12, \"url\": \"u\", \"check_status\": \"ready\"}\n    ... ).check_status\n\
        \    'ready'"
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: File name.
          title: Name
        path:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: File download path (pass to download / verify / delete).
          title: Path
        size:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: File size in bytes.
          title: Size
        url:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: File download URL.
          title: Url
        check_status:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Virus/upload scan status — one of: check, ready, infected, error, deleted.'
          title: Check Status
      title: FileOut
      type: object
    FileQuestion:
      description: "File-upload answer, optionally bounded by size/count validators.\n\nExamples:\n  \
        \  >>> FileQuestion(label=\"Attach\").type\n    'file'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: file
          default: file
          description: 'Discriminator: file.'
          title: Type
          type: string
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules (required, size, count, external).
          title: Validators
      title: FileQuestion
      type: object
    FillableForm:
      description: "Form settings that govern filling (``GET /v1/surveys/{survey}/form``).\n\nThe response\
        \ describes how to render and validate the form. ``pages`` carry the questions to\nfill (each\
        \ item is one of the 12 polymorphic question schemas), ``conditions`` gate the Submit\nbutton,\
        \ and ``values`` holds any pre-filled answer data keyed by question slug — the same slug\nkeys\
        \ you post back in :class:`SubmitBody`. The deeply polymorphic ``pages`` / ``conditions`` /\n\
        ``styles`` are passed through verbatim.\n\nExamples:\n    >>> FillableForm.model_validate(\n \
        \   ...     {\"id\": \"686d\", \"name\": \"Feedback\", \"pages\": [{\"items\": []}]}\n    ...\
        \ ).name\n    'Feedback'"
      properties:
        id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form id (hex ObjectId string).
          title: Id
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form name.
          title: Name
        teaser:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether to show the teaser.
          title: Teaser
        footer:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether to show the footer.
          title: Footer
        iframe:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the form shows only in an iframe.
          title: Iframe
        texts:
          anyOf:
          - $ref: '#/components/schemas/FrontendTexts'
          - type: 'null'
          default: null
          description: Button captions on the form.
        metric:
          anyOf:
          - $ref: '#/components/schemas/FrontendMetric'
          - type: 'null'
          default: null
          description: Yandex Metrica counter ids.
        org:
          anyOf:
          - $ref: '#/components/schemas/FrontendOrganization'
          - type: 'null'
          default: null
          description: Organization that owns the form.
        styles:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          default: null
          description: Form design styles (custom settings and style images).
          title: Styles
        conditions:
          description: Submit-button display-condition groups.
          items:
            additionalProperties: true
            type: object
          title: Conditions
          type: array
        pages:
          description: Form pages; each page's ``items`` are the questions to fill (one of the 12 polymorphic
            question schemas).
          items:
            additionalProperties: true
            type: object
          title: Pages
          type: array
        values:
          additionalProperties: true
          description: Pre-fill data keyed by question slug — the same slug keys posted in a submit.
          title: Values
          type: object
      title: FillableForm
      type: object
    FrontendMetric:
      description: "Yandex Metrica counter ids attached to the form (``metric``).\n\nExamples:\n    >>>\
        \ FrontendMetric(form=1, group=2).group\n    2"
      properties:
        form:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Form Metrica counter id.
          title: Form
        group:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Form-group Metrica counter id.
          title: Group
      title: FrontendMetric
      type: object
    FrontendOrganization:
      description: "The organization that owns the form (``org``).\n\nExamples:\n    >>> FrontendOrganization(dir_id=\"\
        1\", collab_id=\"2\").dir_id\n    '1'"
      properties:
        dir_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Organization id in the directory.
          title: Dir Id
        collab_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Organization id in collab.
          title: Collab Id
      title: FrontendOrganization
      type: object
    FrontendTexts:
      description: "Button captions shown while filling the form (``texts``).\n\nExamples:\n    >>> FrontendTexts(submit=\"\
        Send\", back=\"Back\", next=\"Next\").submit\n    'Send'"
      properties:
        submit:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Caption of the Submit button.
          title: Submit
        back:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Caption of the Back button.
          title: Back
        next:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Caption of the Next button.
          title: Next
      title: FrontendTexts
      type: object
    FunctionSubscription:
      description: "Call a Yandex Cloud function.\n\nExamples:\n    >>> FunctionSubscription(function_id=\"\
        d4e1\").type\n    'function'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Subscription id (integer, read only).
          title: Id
        active:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the integration runs.
          title: Active
        follow:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Notify the form's followers about the run.
          title: Follow
        variables:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionVariable'
            type: array
          - type: 'null'
          default: null
          description: Variables referenced from the subscription's texts.
          title: Variables
        type:
          const: function
          default: function
          description: 'Discriminator: function.'
          title: Type
          type: string
        function_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Cloud function id (max 255).
          title: Function Id
        params:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionHeader'
            type: array
          - type: 'null'
          default: null
          description: Function parameters.
          title: Params
      title: FunctionSubscription
      type: object
    GroupIdentity:
      description: "A group by source and id.\n\nExamples:\n    >>> GroupIdentity(src=\"dir\", id=\"5\"\
        ).src\n    'dir'"
      properties:
        src:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Group source: dir, cloud, com or staff.'
          title: Src
        id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Group id within its source.
          title: Id
      title: GroupIdentity
      type: object
    HistoryEvent:
      description: "One change made to a form: who did what to which part, and when.\n\nExamples:\n  \
        \  >>> HistoryEvent.model_validate(\n    ...     {\"id\": 7, \"model\": \"surveyhook\", \"action\"\
        : \"POST api-v1:get_hooks_public_view\"}\n    ... ).model\n    'surveyhook'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Event id (integer).
          title: Id
        created:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: ISO-8601 time of the change.
          title: Created
        user:
          anyOf:
          - $ref: '#/components/schemas/UserRef'
          - type: 'null'
          default: null
          description: Who made the change.
        model:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: What changed, e.g. survey, surveyquestion, surveyhook.
          title: Model
        action:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: The request that made the change.
          title: Action
      title: HistoryEvent
      type: object
    HistoryPage:
      description: "One page of ``GET /surveys/{id}/history`` — the cursor and its events (internal).\n\
        \nExamples:\n    >>> HistoryPage.model_validate({\"iteration_key\": 5, \"limit\": 2, \"items\"\
        : []}).limit\n    2"
      properties:
        iteration_key:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Cursor of the next page.
          title: Iteration Key
        limit:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Events per page.
          title: Limit
        items:
          description: The page's events.
          items:
            $ref: '#/components/schemas/HistoryEvent'
          title: Items
          type: array
      title: HistoryPage
      type: object
    Hook:
      description: "An integration group with its conditions and integrations.\n\nExamples:\n    >>> Hook.model_validate(\n\
        \    ...     {\n    ...         \"id\": 11,\n    ...         \"name\": \"CRM\",\n    ...     \
        \    \"active\": False,\n    ...         \"subscriptions\": [{\"type\": \"http\", \"id\": 4}],\n\
        \    ...     }\n    ... ).subscriptions[0].id\n    4"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Integration group id (integer).
          title: Id
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Integration group name.
          title: Name
        active:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the group's integrations run.
          title: Active
        conditions:
          anyOf:
          - $ref: '#/components/schemas/ConditionsResponse'
          - type: 'null'
          default: null
          description: Conditions that gate the group (absent when there are none).
        subscriptions:
          description: The group's integrations, each tagged by type.
          items:
            discriminator:
              mapping:
                email: '#/components/schemas/EmailSubscription'
                function: '#/components/schemas/FunctionSubscription'
                http: '#/components/schemas/HttpSubscription'
                jsonrpc: '#/components/schemas/JsonRpcSubscription'
                tracker: '#/components/schemas/TrackerSubscription'
                tracker_comment: '#/components/schemas/TrackerCommentSubscription'
                wiki: '#/components/schemas/WikiSubscription'
              propertyName: type
            oneOf:
            - $ref: '#/components/schemas/EmailSubscription'
            - $ref: '#/components/schemas/TrackerSubscription'
            - $ref: '#/components/schemas/TrackerCommentSubscription'
            - $ref: '#/components/schemas/WikiSubscription'
            - $ref: '#/components/schemas/JsonRpcSubscription'
            - $ref: '#/components/schemas/HttpSubscription'
            - $ref: '#/components/schemas/FunctionSubscription'
          title: Subscriptions
          type: array
      title: Hook
      type: object
    HookCreate:
      description: "Typed body for ``POST /surveys/{id}/hooks``; unset fields are dropped before sending.\n\
        \nExamples:\n    >>> HookCreate(name=\"CRM\", active=False).model_dump(exclude_none=True)\n  \
        \  {'name': 'CRM', 'active': False}"
      properties:
        name:
          anyOf:
          - maxLength: 100
            type: string
          - type: 'null'
          default: null
          description: Group name (max 100).
          title: Name
        active:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the group's integrations run.
          title: Active
      title: HookCreate
      type: object
    HookUpdate:
      description: "Typed body for ``PATCH /surveys/{id}/hooks/{hook_id}``: only the fields set change.\n\
        \nExamples:\n    >>> HookUpdate(active=True).model_dump(exclude_none=True)\n    {'active': True}"
      properties:
        name:
          anyOf:
          - maxLength: 100
            type: string
          - type: 'null'
          default: null
          description: Group name (max 100).
          title: Name
        active:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the group's integrations run.
          title: Active
      title: HookUpdate
      type: object
    HttpSubscription:
      description: "Send an HTTP request.\n\nExamples:\n    >>> HttpSubscription(url=\"https://example.com/hook\"\
        , method=\"post\").method\n    'post'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Subscription id (integer, read only).
          title: Id
        active:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the integration runs.
          title: Active
        follow:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Notify the form's followers about the run.
          title: Follow
        variables:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionVariable'
            type: array
          - type: 'null'
          default: null
          description: Variables referenced from the subscription's texts.
          title: Variables
        type:
          const: http
          default: http
          description: 'Discriminator: http.'
          title: Type
          type: string
        url:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Request URL (max 255).
          title: Url
        method:
          anyOf:
          - enum:
            - get
            - post
            - patch
            - put
            - delete
            type: string
          - type: 'null'
          default: null
          description: 'HTTP method: get, post, patch, put or delete.'
          title: Method
        body:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Request body; may embed variables.
          title: Body
        headers:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionHeader'
            type: array
          - type: 'null'
          default: null
          description: HTTP headers.
          title: Headers
      title: HttpSubscription
      type: object
    Image:
      description: "An image uploaded to a form (``POST …/images`` result).\n\nThe upload is scanned asynchronously\
        \ — ``check_status`` starts at ``check`` and moves to\n``ready`` (or an error state); ``links``\
        \ maps each rendered size to its URL. Reference the\nreturned ``id`` from a question's / option's\
        \ / style's ``image`` field.\n\nExamples:\n    >>> Image.model_validate(\n    ...     {\"id\"\
        : 7, \"links\": {}, \"name\": \"logo.png\", \"check_status\": \"check\"}\n    ... ).id\n    7"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Image ID (reference it from a form image field).
          title: Id
        links:
          additionalProperties: true
          description: Map of image size → URL for each rendered variant.
          title: Links
          type: object
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Original image file name.
          title: Name
        check_status:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Virus/upload scan status — one of: check, ready, infected, error, deleted.'
          title: Check Status
        check_mode:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Scan mode: strict or loose (reported on clone).'
          title: Check Mode
      title: Image
      type: object
    ImageClone:
      description: "Typed body for ``POST /surveys/{id}/images/clone``: the image to copy and its new\
        \ name.\n\nUnset fields are dropped before the request is sent.\n\nExamples:\n    >>> ImageClone(id=7,\
        \ name=\"copy.png\").model_dump(exclude_none=True)\n    {'id': 7, 'name': 'copy.png'}"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Id of the image to clone.
          title: Id
        links:
          anyOf:
          - additionalProperties:
              type: string
            type: object
          - type: 'null'
          default: null
          description: Map of image size → URL of the image to clone.
          title: Links
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: File name for the clone.
          title: Name
      title: ImageClone
      type: object
    IntegerQuestion:
      description: "Whole-number answer, optionally bounded by min/max validators.\n\nExamples:\n    >>>\
        \ IntegerQuestion(label=\"Age\", initial=18).type\n    'integer'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: integer
          default: integer
          description: 'Discriminator: integer.'
          title: Type
          type: string
        initial:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Default integer value.
          title: Initial
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules (required, min, max, external).
          title: Validators
      title: IntegerQuestion
      type: object
    JsonRpcSubscription:
      description: "Call a JSON-RPC method.\n\nExamples:\n    >>> JsonRpcSubscription(method=\"answers.add\"\
        ).type\n    'jsonrpc'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Subscription id (integer, read only).
          title: Id
        active:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the integration runs.
          title: Active
        follow:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Notify the form's followers about the run.
          title: Follow
        variables:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionVariable'
            type: array
          - type: 'null'
          default: null
          description: Variables referenced from the subscription's texts.
          title: Variables
        type:
          const: jsonrpc
          default: jsonrpc
          description: 'Discriminator: jsonrpc.'
          title: Type
          type: string
        url:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Endpoint URL (max 255).
          title: Url
        method:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: JSON-RPC method name (max 255).
          title: Method
        params:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionHeader'
            type: array
          - type: 'null'
          default: null
          description: Call parameters.
          title: Params
        headers:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionHeader'
            type: array
          - type: 'null'
          default: null
          description: HTTP headers.
          title: Headers
      title: JsonRpcSubscription
      type: object
    Keyset:
      description: "A key set for form filling (``/surveys/{id}/keysets`` item and single get).\n\nExamples:\n\
        \    >>> Keyset.model_validate({\"id\": 7, \"name\": \"Q1\", \"total\": 100, \"used\": 3}).used\n\
        \    3"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Key set id (integer).
          title: Id
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Key set name.
          title: Name
        total:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Number of keys in the set.
          title: Total
        used:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Number of keys already used.
          title: Used
        is_enabled:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the key set is active.
          title: Is Enabled
      title: Keyset
      type: object
    KeysetCreate:
      description: "Typed request body for creating a key set (``POST /surveys/{id}/keysets``).\n\nUnset\
        \ (``None``) fields are dropped before the request is sent. The create endpoint,\nhowever, **requires**\
        \ ``is_enabled`` (a body without it is rejected), so the CLI marks\n``--enabled/--disabled`` required\
        \ and always sends the flag; fields stay optional here so\n:class:`KeysetUpdate` can reuse the\
        \ shape.\n\nExamples:\n    >>> KeysetCreate(name=\"Q1 invites\", total=250, is_enabled=True).is_enabled\n\
        \    True"
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Key set name.
          title: Name
        total:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Number of keys to generate in the set.
          title: Total
        is_enabled:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Create the key set active (usable to build links).
          title: Is Enabled
      title: KeysetCreate
      type: object
    KeysetUpdate:
      description: "Typed request body for modifying a key set (``PATCH /surveys/{id}/keysets/{keyset_id}``).\n\
        \nSame fields as :class:`KeysetCreate`. Although the verb is PATCH, the API validates the body\
        \ as\na full record — ``name``, ``total`` and ``is_enabled`` are all required (a missing field\
        \ is\nrejected with ``400 value_error.missing``), so set every field.\n\nExamples:\n    >>> KeysetUpdate(name=\"\
        Q1\", total=250, is_enabled=False).is_enabled\n    False"
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Key set name.
          title: Name
        total:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Number of keys to generate in the set.
          title: Total
        is_enabled:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Create the key set active (usable to build links).
          title: Is Enabled
      title: KeysetUpdate
      type: object
    MatrixQuestion:
      description: "A grid of rows scored against a shared set of columns.\n\nExamples:\n    >>> MatrixQuestion(label=\"\
        Grid\", rows=[QuestionMatrixRow(label=\"R\")]).type\n    'matrix'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: matrix
          default: matrix
          description: 'Discriminator: matrix.'
          title: Type
          type: string
        rows:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionMatrixRow'
            type: array
          - type: 'null'
          default: null
          description: Grid rows.
          title: Rows
        columns:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionMatrixRow'
            type: array
          - type: 'null'
          default: null
          description: Grid columns.
          title: Columns
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules (required, external).
          title: Validators
      title: MatrixQuestion
      type: object
    Notification:
      description: "One run of an integration, as the listing shows it.\n\nExamples:\n    >>> Notification.model_validate({\"\
        id\": 7, \"status\": \"error\", \"type\": \"http\"}).status\n    'error'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Notification id (integer).
          title: Id
        status:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Run state: pending, success, error or canceled.'
          title: Status
        created:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: ISO-8601 time the run was queued.
          title: Created
        finished:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: ISO-8601 time the run ended.
          title: Finished
        survey_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form id.
          title: Survey Id
        survey_name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form name.
          title: Survey Name
        hook_id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Integration group id.
          title: Hook Id
        hook_name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Integration group name.
          title: Hook Name
        subscription_id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Integration id.
          title: Subscription Id
        answer_id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Id of the answer that triggered it.
          title: Answer Id
        user_id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Id of the user who answered.
          title: User Id
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Integration type: email, tracker, tracker_comment, wiki, jsonrpc, http or function.'
          title: Type
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Note on the run.
          title: Comment
      title: Notification
      type: object
    NotificationAction:
      description: "The answer to a restart or a cancel of a notification.\n\nExamples:\n    >>> NotificationAction.model_validate(\n\
        \    ...     {\"id\": 7, \"survey_id\": \"686d\", \"result\": {\"status\": \"ok\"}}\n    ... ).result.status\n\
        \    'ok'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Notification id.
          title: Id
        survey_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form id.
          title: Survey Id
        subscription_id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Integration id.
          title: Subscription Id
        result:
          anyOf:
          - $ref: '#/components/schemas/NotificationActionResult'
          - type: 'null'
          default: null
          description: How the action went.
      title: NotificationAction
      type: object
    NotificationActionResult:
      description: "How a restart or a cancel went: ``ok``, ``skip``, ``fail`` or ``operation``.\n\nExamples:\n\
        \    >>> NotificationActionResult.model_validate({\"status\": \"operation\", \"operation_id\"\
        : \"a\"})\n    NotificationActionResult(status='operation', detail=None, operation_id='a')"
      properties:
        status:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'ok (done), skip (nothing to do), fail (see detail) or operation (queued: operation_id
            may be ''not-supported'', read the run''s state instead).'
          title: Status
        detail:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Why it failed (fail only).
          title: Detail
        operation_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Background operation id (operation only).
          title: Operation Id
      title: NotificationActionResult
      type: object
    NotificationDetails:
      description: "A notification with what the integration was given, answered and failed with.\n\n\
        Examples:\n    >>> NotificationDetails.model_validate(\n    ...     {\"id\": 7, \"error\": [{\"\
        name\": \"detail\", \"value\": \"timeout\"}]}\n    ... ).error[0].value\n    'timeout'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Notification id (integer).
          title: Id
        status:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Run state: pending, success, error or canceled.'
          title: Status
        created:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: ISO-8601 time the run was queued.
          title: Created
        finished:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: ISO-8601 time the run ended.
          title: Finished
        survey_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form id.
          title: Survey Id
        survey_name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form name.
          title: Survey Name
        hook_id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Integration group id.
          title: Hook Id
        hook_name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Integration group name.
          title: Hook Name
        subscription_id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Integration id.
          title: Subscription Id
        answer_id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Id of the answer that triggered it.
          title: Answer Id
        user_id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Id of the user who answered.
          title: User Id
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Integration type: email, tracker, tracker_comment, wiki, jsonrpc, http or function.'
          title: Type
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Note on the run.
          title: Comment
        context:
          anyOf:
          - items:
              $ref: '#/components/schemas/NotificationField'
            type: array
          - type: 'null'
          default: null
          description: What the integration was given.
          title: Context
        response:
          anyOf:
          - items:
              $ref: '#/components/schemas/NotificationField'
            type: array
          - type: 'null'
          default: null
          description: What the integration answered.
          title: Response
        error:
          anyOf:
          - items:
              $ref: '#/components/schemas/NotificationField'
            type: array
          - type: 'null'
          default: null
          description: Why the run failed (error runs only).
          title: Error
      title: NotificationDetails
      type: object
    NotificationField:
      description: "One named value in a notification's context, response or error.\n\nExamples:\n   \
        \ >>> NotificationField.model_validate({\"name\": \"url\", \"value\": \"x\", \"type\": \"url\"\
        }).type\n    'url'"
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Field name.
          title: Name
        value:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Field value.
          title: Value
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Display type: text, textarea, code, json, xml or url.'
          title: Type
      title: NotificationField
      type: object
    NotificationLinks:
      description: "The paging links of a notification listing (internal).\n\nExamples:\n    >>> NotificationLinks.model_validate({\"\
        next\": \"/v1/notifications/?id=9\"}).next\n    '/v1/notifications/?id=9'"
      properties:
        next:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Link to the next page.
          title: Next
      title: NotificationLinks
      type: object
    NotificationPage:
      description: "One page of ``GET /notifications`` (internal).\n\nExamples:\n    >>> NotificationPage.model_validate({\"\
        links\": {}, \"result\": [{\"id\": 7}]}).result[0].id\n    7"
      properties:
        links:
          $ref: '#/components/schemas/NotificationLinks'
          description: Link to the next page.
        result:
          description: The page's runs.
          items:
            $ref: '#/components/schemas/Notification'
          title: Result
          type: array
      title: NotificationPage
      type: object
    NotificationStatus:
      description: "A notification's id and run state.\n\nExamples:\n    >>> NotificationStatus.model_validate({\"\
        id\": 7, \"status\": \"pending\"}).status\n    'pending'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Notification id.
          title: Id
        status:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Run state: pending, success, error or canceled.'
          title: Status
      title: NotificationStatus
      type: object
    OperationOutcome:
      description: "What a finished operation produced (``result`` of an operation).\n\nExamples:\n  \
        \  >>> OperationOutcome(status=302, href=\"https://forms.test/file\").status\n    302"
      properties:
        status:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: HTTP status the operation ended with.
          title: Status
        href:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: URL to follow for the result.
          title: Href
      title: OperationOutcome
      type: object
    OperationResult:
      description: "The status of a Forms background operation: ``{id, status, message, result}``.\n\n\
        A long-running action (an answers export) answers with an operation ``id``; re-read its\nstatus\
        \ until :attr:`is_terminal`. ``status`` is one of ``ok`` (finished, result ready),\n``fail``,\
        \ ``wait`` (still running) or ``not_running``.\n\nExamples:\n    >>> OperationResult.model_validate({\"\
        id\": \"op-1\", \"status\": \"ok\"}).is_ready\n    True"
      properties:
        id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Operation id (echoes the id an async trigger returned).
          title: Id
        status:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Operation status: one of ``ok``, ``fail``, ``wait``, ``not_running``.'
          title: Status
        message:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Human-readable operation message.
          title: Message
        result:
          anyOf:
          - $ref: '#/components/schemas/OperationOutcome'
          - type: 'null'
          default: null
          description: What a finished operation produced.
      title: OperationResult
      type: object
    Page:
      description: "A page grouping questions (``…/questions`` → ``pages[]``).\n\nExamples:\n    >>> Page.model_validate({\"\
        id\": 7, \"items\": [{\"id\": 1}]}).items[0].id\n    1"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Page ID (integer).
          title: Id
        items:
          description: Questions grouped on this page, in display order.
          items:
            $ref: '#/components/schemas/Question'
          title: Items
          type: array
      title: Page
      type: object
    PaymentQuestion:
      description: "A payment field (amount to a wallet), optionally fixed or bounded by min/max.\n\n\
        Examples:\n    >>> PaymentQuestion(label=\"Donate\", account_id=\"410011\", fixed=False).account_id\n\
        \    '410011'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: payment
          default: payment
          description: 'Discriminator: payment.'
          title: Type
          type: string
        account_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Wallet number receiving the payment.
          title: Account Id
        fixed:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the respondent may change the amount.
          title: Fixed
        initial:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Default payment amount.
          title: Initial
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules (required, min, max).
          title: Validators
      title: PaymentQuestion
      type: object
    Permission:
      description: "Who may perform one action on a form.\n\nExamples:\n    >>> Permission.model_validate({\"\
        access\": \"common\", \"action\": \"submit\"}).access\n    'common'"
      properties:
        access:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Access level: owner, restricted, common or public.'
          title: Access
        action:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Action: change (edit, read answers) or submit (fill in).'
          title: Action
        users:
          anyOf:
          - items:
              $ref: '#/components/schemas/UserRef'
            type: array
          - type: 'null'
          default: null
          description: Users granted the action (restricted access).
          title: Users
        groups:
          anyOf:
          - items:
              $ref: '#/components/schemas/PermissionGroup'
            type: array
          - type: 'null'
          default: null
          description: Groups granted the action (restricted access).
          title: Groups
      title: Permission
      type: object
    PermissionGroup:
      description: "A group a permission lists.\n\nExamples:\n    >>> PermissionGroup.model_validate({\"\
        identity\": {\"src\": \"dir\", \"id\": \"5\"}}).identity.id\n    '5'"
      properties:
        identity:
          anyOf:
          - $ref: '#/components/schemas/GroupIdentity'
          - type: 'null'
          default: null
          description: The group's ids.
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Group name.
          title: Name
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Group type.
          title: Type
      title: PermissionGroup
      type: object
    Question:
      description: "A single question / form field.\n\nServes both ``GET …/questions`` (``pages[].items[]``)\
        \ and ``GET …/questions/{id}``\n(a single question's settings). ``id`` is an **int**. One class\
        \ reads all twelve\nquestion types: the fields a type does not have stay ``None``. ``items`` holds\
        \ the options\nof an ``enum`` question and the sub-questions of a ``series``.\n\nExamples:\n \
        \   >>> Question.model_validate({\"id\": 1, \"slug\": \"s\", \"type\": \"string\", \"label\":\
        \ \"L\"}).slug\n    's'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Question ID (integer).
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug (also the answers-table column key).
          title: Slug
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question type — string, boolean, integer, date, daterange, file, enum, suggest,
            matrix, comment, payment, series, ….
          title: Type
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the question is hidden (shown only when its conditions match).
          title: Hidden
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        initial:
          default: null
          description: Default / initial value; type varies by question type (string, int, bool, or a
            list of enum items).
          title: Initial
        multiline:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether a text answer spans multiple lines (string questions).
          title: Multiline
        has_quiz:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the question is graded as part of a quiz / test.
          title: Has Quiz
        conditions:
          anyOf:
          - $ref: '#/components/schemas/ConditionsResponse'
          - type: 'null'
          default: null
          description: Conditions under which the question is shown.
        image:
          anyOf:
          - $ref: '#/components/schemas/Image'
          - type: 'null'
          default: null
          description: Image shown with the question.
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules of the answer.
          title: Validators
        hint_source:
          anyOf:
          - $ref: '#/components/schemas/QuestionHintSource'
          - type: 'null'
          default: null
          description: Source of the input hints (string questions).
        quiz_items:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionQuizItem'
            type: array
          - type: 'null'
          default: null
          description: Graded answers of a text quiz question.
          title: Quiz Items
        quiz_comment:
          anyOf:
          - $ref: '#/components/schemas/QuestionQuizComment'
          - type: 'null'
          default: null
          description: Comments shown for a right and a wrong quiz answer.
        header:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether a comment block is shown as a heading.
          title: Header
        fixed:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the payment amount is fixed (payment questions).
          title: Fixed
        account_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Wallet that receives the payment (payment questions).
          title: Account Id
        widget:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'How the options are shown: radio, checkbox, dropdown, stars or onerow.'
          title: Widget
        items:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionItem'
            type: array
          - type: 'null'
          default: null
          description: Options of an enum question, or the sub-questions of a series.
          title: Items
        modify_choices:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Order of the options: natural, sort or shuffle.'
          title: Modify Choices
        show_first:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the first option is shown preselected.
          title: Show First
        data_source:
          anyOf:
          - $ref: '#/components/schemas/QuestionDataSource'
          - type: 'null'
          default: null
          description: Where a suggest question takes its values.
        multichoice:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether several values may be chosen (suggest questions).
          title: Multichoice
        rows:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionMatrixRow'
            type: array
          - type: 'null'
          default: null
          description: Rows of a matrix.
          title: Rows
        columns:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionMatrixRow'
            type: array
          - type: 'null'
          default: null
          description: Columns of a matrix.
          title: Columns
      title: Question
      type: object
    QuestionDataSource:
      description: "The external data source backing a ``suggest`` question's options.\n\nLive-verified\
        \ source names: ``city`` and ``country`` (the API rejects other names with\n400 \"incorrect data\
        \ source\").\n\nExamples:\n    >>> QuestionDataSource(name=\"city\").name\n    'city'"
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Data-source name — ``city`` or ``country``.
          title: Name
        params:
          anyOf:
          - items:
              $ref: '#/components/schemas/DataSourceParam'
            type: array
          - type: 'null'
          default: null
          description: Data-source parameters.
          title: Params
      title: QuestionDataSource
      type: object
    QuestionEnumItem:
      description: "One selectable option of an ``enum`` (radio/checkbox/dropdown/stars) question.\n\n\
        Examples:\n    >>> QuestionEnumItem(slug=\"opt1\", label=\"Option 1\").slug\n    'opt1'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Option ID (integer).
          title: Id
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug of the option.
          title: Slug
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Option text shown to the respondent.
          title: Label
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the option is hidden.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown for the option.
        correct:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the option is a correct answer (quiz mode).
          title: Correct
        scores:
          anyOf:
          - type: number
          - type: 'null'
          default: null
          description: Points awarded for the option (quiz mode).
          title: Scores
      title: QuestionEnumItem
      type: object
    QuestionHintSource:
      description: "A named source that supplies a string question's hint/autocomplete.\n\nExamples:\n\
        \    >>> QuestionHintSource(name=\"src\", params=[DataSourceParam(value=\"x\")]).name\n    'src'"
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Hint-source name.
          title: Name
        params:
          anyOf:
          - items:
              $ref: '#/components/schemas/DataSourceParam'
            type: array
          - type: 'null'
          default: null
          description: Hint-source parameters.
          title: Params
      title: QuestionHintSource
      type: object
    QuestionImage:
      description: "An image attached to a question (or an enum option).\n\nExamples:\n    >>> QuestionImage(id=5,\
        \ name=\"cover.png\").id\n    5"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Image ID (from an image upload).
          title: Id
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Original image file name.
          title: Name
        links:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          default: null
          description: Map of links to the rendered image sizes.
          title: Links
        check_status:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Upload/scan status: check, ready, infected, error, deleted.'
          title: Check Status
      title: QuestionImage
      type: object
    QuestionItem:
      description: "An item of a question: an option of an ``enum``, or a sub-question of a ``series``.\n\
        \nAn option has ``id``, ``slug``, ``label``, ``hidden``, ``image`` and, in a quiz, ``correct``\n\
        and ``scores``; a sub-question is a whole question, with its ``type``.\n\nExamples:\n    >>> QuestionItem.model_validate({\"\
        id\": 5, \"label\": \"Yes\", \"correct\": True}).correct\n    True"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Question ID (integer).
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug (also the answers-table column key).
          title: Slug
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question type — string, boolean, integer, date, daterange, file, enum, suggest,
            matrix, comment, payment, series, ….
          title: Type
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the question is hidden (shown only when its conditions match).
          title: Hidden
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        initial:
          default: null
          description: Default / initial value; type varies by question type (string, int, bool, or a
            list of enum items).
          title: Initial
        multiline:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether a text answer spans multiple lines (string questions).
          title: Multiline
        has_quiz:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the question is graded as part of a quiz / test.
          title: Has Quiz
        conditions:
          anyOf:
          - $ref: '#/components/schemas/ConditionsResponse'
          - type: 'null'
          default: null
          description: Conditions under which the question is shown.
        image:
          anyOf:
          - $ref: '#/components/schemas/Image'
          - type: 'null'
          default: null
          description: Image shown with the question.
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules of the answer.
          title: Validators
        hint_source:
          anyOf:
          - $ref: '#/components/schemas/QuestionHintSource'
          - type: 'null'
          default: null
          description: Source of the input hints (string questions).
        quiz_items:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionQuizItem'
            type: array
          - type: 'null'
          default: null
          description: Graded answers of a text quiz question.
          title: Quiz Items
        quiz_comment:
          anyOf:
          - $ref: '#/components/schemas/QuestionQuizComment'
          - type: 'null'
          default: null
          description: Comments shown for a right and a wrong quiz answer.
        header:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether a comment block is shown as a heading.
          title: Header
        fixed:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the payment amount is fixed (payment questions).
          title: Fixed
        account_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Wallet that receives the payment (payment questions).
          title: Account Id
        widget:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'How the options are shown: radio, checkbox, dropdown, stars or onerow.'
          title: Widget
        items:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionItem'
            type: array
          - type: 'null'
          default: null
          description: Options of an enum question, or the sub-questions of a series.
          title: Items
        modify_choices:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Order of the options: natural, sort or shuffle.'
          title: Modify Choices
        show_first:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the first option is shown preselected.
          title: Show First
        data_source:
          anyOf:
          - $ref: '#/components/schemas/QuestionDataSource'
          - type: 'null'
          default: null
          description: Where a suggest question takes its values.
        multichoice:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether several values may be chosen (suggest questions).
          title: Multichoice
        rows:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionMatrixRow'
            type: array
          - type: 'null'
          default: null
          description: Rows of a matrix.
          title: Rows
        columns:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionMatrixRow'
            type: array
          - type: 'null'
          default: null
          description: Columns of a matrix.
          title: Columns
        correct:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the option is the right answer of a quiz.
          title: Correct
        scores:
          anyOf:
          - type: number
          - type: 'null'
          default: null
          description: Points the option gives in a quiz.
          title: Scores
      title: QuestionItem
      type: object
    QuestionMatrixRow:
      description: "One row (or column) of a ``matrix`` question's grid.\n\nExamples:\n    >>> QuestionMatrixRow(slug=\"\
        r1\", label=\"Row 1\").label\n    'Row 1'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Row/column ID (integer).
          title: Id
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug of the row/column.
          title: Slug
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Row/column text.
          title: Label
      title: QuestionMatrixRow
      type: object
    QuestionMove:
      description: "Typed body for ``POST …/questions/{id}/move`` — where to reposition the question.\n\
        \nA bare ``position`` with no page target is a **silent no-op** live: the API answers 200\nbut\
        \ moves nothing. Rather than paper over that with a hidden default, this model RAISES\nwhen ``position``\
        \ is set and no target (``page`` / ``page_id`` / ``create_page`` /\n``question``) is given — the\
        \ caller must pick a target. The CLI ``move`` command defaults\n``page`` to 1 for a bare ``--position``\
        \ *visibly*, before constructing this model; an MCP\ncaller passing position-only gets this validation\
        \ error instead of a silent re-page.\n\nExamples:\n    >>> QuestionMove(page=2, position=1).position\n\
        \    1\n    >>> QuestionMove(position=1)  # doctest: +IGNORE_EXCEPTION_DETAIL\n    Traceback (most\
        \ recent call last):\n        ...\n    pydantic_core._pydantic_core.ValidationError: 1 validation\
        \ error for QuestionMove"
      properties:
        question:
          anyOf:
          - type: integer
          - type: string
          - type: 'null'
          default: null
          description: Question id or slug to move into a question series.
          title: Question
        page:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Target page number (1-based). Required (or another target) when ``position`` is
            set — the API silently ignores a bare position.
          title: Page
        page_id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Target page ID.
          title: Page Id
        create_page:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Create a new page for the question (used with ``page``).
          title: Create Page
        position:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: New position of the question on the page (1-based).
          title: Position
      title: QuestionMove
      type: object
    QuestionMoveResult:
      description: "Result of ``POST …/questions/{id}/move`` — the moved question's id.\n\nExamples:\n\
        \    >>> QuestionMoveResult(id=17).id\n    17"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: ID of the moved question.
          title: Id
      title: QuestionMoveResult
      type: object
    QuestionQuizComment:
      description: "What a quiz question says after a right and after a wrong answer (``quiz_comment``).\n\
        \nExamples:\n    >>> QuestionQuizComment(correct=\"Right!\").correct\n    'Right!'"
      properties:
        correct:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Comment for a right answer.
          title: Correct
        incorrect:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Comment for a wrong answer.
          title: Incorrect
      title: QuestionQuizComment
      type: object
    QuestionQuizItem:
      description: "One graded answer option (string/enum quiz mode).\n\nExamples:\n    >>> QuestionQuizItem(label=\"\
        A\", correct=True, scores=1.0).correct\n    True"
      properties:
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Answer option text.
          title: Label
        correct:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether this option is correct.
          title: Correct
        scores:
          anyOf:
          - type: number
          - type: 'null'
          default: null
          description: Points awarded for this option.
          title: Scores
      title: QuestionQuizItem
      type: object
    QuestionValidator:
      description: "One answer-validation rule (an item of a question's ``validators`` list).\n\n``type``\
        \ selects the rule; ``value`` carries its argument where the rule needs one —\nan int (``min``/``max``\
        \ length or number, ``size``/``count``), a float, or a string\n(a ``min``/``max`` date ``YYYY-MM-DD``,\
        \ a ``regexp`` pattern). Rules like ``required``,\n``email``, ``url``, ``phone``, ``inn``, ``single``\
        \ take no ``value``.\n\nExamples:\n    >>> QuestionValidator(type=\"min\", value=3).value\n  \
        \  3"
      properties:
        type:
          description: Validation rule kind, e.g. required, min, max, email.
          enum:
          - required
          - min
          - max
          - email
          - url
          - phone
          - inn
          - decimal
          - russian
          - regexp
          - external
          - size
          - count
          - single
          title: Type
          type: string
        value:
          anyOf:
          - type: integer
          - type: number
          - type: string
          - type: 'null'
          default: null
          description: Rule argument (length/number, date string, or regexp pattern).
          title: Value
      required:
      - type
      title: QuestionValidator
      type: object
    QuestionsResponse:
      description: "Envelope for ``GET …/questions`` — ``{pages:[Page]}``.\n\nExamples:\n    >>> QuestionsResponse.model_validate({\"\
        pages\": [{\"items\": [{\"id\": 1}]}]}).pages[0].items[\n    ...     0\n    ... ].id\n    1"
      properties:
        pages:
          description: Form pages, each grouping a set of questions.
          items:
            $ref: '#/components/schemas/Page'
          title: Pages
          type: array
      title: QuestionsResponse
      type: object
    SeriesQuestion:
      description: "A repeatable group nesting other questions (each item is itself a typed question).\n\
        \nThe API accepts ``items`` and ignores them (checked live on 2026-10-04): the series comes\n\
        back empty.\n\nExamples:\n    >>> SeriesQuestion(label=\"People\").type\n    'series'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: series
          default: series
          description: 'Discriminator: series.'
          title: Type
          type: string
        items:
          anyOf:
          - items:
              discriminator:
                mapping:
                  boolean: '#/components/schemas/BooleanQuestion'
                  comment: '#/components/schemas/CommentQuestion'
                  date: '#/components/schemas/DateQuestion'
                  daterange: '#/components/schemas/DateRangeQuestion'
                  enum: '#/components/schemas/EnumQuestion'
                  file: '#/components/schemas/FileQuestion'
                  integer: '#/components/schemas/IntegerQuestion'
                  matrix: '#/components/schemas/MatrixQuestion'
                  payment: '#/components/schemas/PaymentQuestion'
                  series: '#/components/schemas/SeriesQuestion'
                  string: '#/components/schemas/StringQuestion'
                  suggest: '#/components/schemas/SuggestQuestion'
                propertyName: type
              oneOf:
              - $ref: '#/components/schemas/StringQuestion'
              - $ref: '#/components/schemas/BooleanQuestion'
              - $ref: '#/components/schemas/IntegerQuestion'
              - $ref: '#/components/schemas/FileQuestion'
              - $ref: '#/components/schemas/CommentQuestion'
              - $ref: '#/components/schemas/DateQuestion'
              - $ref: '#/components/schemas/DateRangeQuestion'
              - $ref: '#/components/schemas/PaymentQuestion'
              - $ref: '#/components/schemas/EnumQuestion'
              - $ref: '#/components/schemas/SuggestQuestion'
              - $ref: '#/components/schemas/MatrixQuestion'
              - $ref: '#/components/schemas/SeriesQuestion'
            type: array
          - type: 'null'
          default: null
          description: 'Ignored by the API: a series is created with no questions in it.'
          title: Items
      title: SeriesQuestion
      type: object
    StaticAttachment:
      description: "A fixed file attached to every run (sent by ``path``; read back with ``id`` and links).\n\
        \nExamples:\n    >>> StaticAttachment(path=\"/forms/1/a.pdf\").path\n    '/forms/1/a.pdf'"
      properties:
        path:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Uploaded file path (from `subscriptions attach`).
          title: Path
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Attachment id (read only).
          title: Id
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: File name (read only).
          title: Name
        links:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          default: null
          description: Download links (read only).
          title: Links
        check_status:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Scan status: check, ready, infected, error, deleted.'
          title: Check Status
      title: StaticAttachment
      type: object
    StringQuestion:
      description: "Free-text answer (single- or multi-line). Validators add email/url/phone/inn/… masks.\n\
        \nExamples:\n    >>> StringQuestion(label=\"Name\", multiline=False).type\n    'string'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: string
          default: string
          description: 'Discriminator: string.'
          title: Type
          type: string
        initial:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Default text value.
          title: Initial
        multiline:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Allow a multi-line answer.
          title: Multiline
        hint_source:
          anyOf:
          - $ref: '#/components/schemas/QuestionHintSource'
          - type: 'null'
          default: null
          description: Source supplying autocomplete hints.
        has_quiz:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Grade the answer as a quiz item.
          title: Has Quiz
        quiz_items:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionQuizItem'
            type: array
          - type: 'null'
          default: null
          description: Accepted correct answers (quiz mode).
          title: Quiz Items
        quiz_comment:
          anyOf:
          - $ref: '#/components/schemas/QuestionQuizComment'
          - type: 'null'
          default: null
          description: Comments shown for a right and a wrong quiz answer.
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules (required, min/max length, email, url, …).
          title: Validators
      title: StringQuestion
      type: object
    SubmitBody:
      additionalProperties: true
      description: "The write body for ``POST …/form`` — an answer map keyed by question slug.\n\nA flexible\
        \ bag (``extra=\"allow\"``): each key is a question ``slug`` (see :class:`FillableForm`\n``pages[].items[].id``\
        \ / ``values``) and the value is that question's answer — a scalar\n(string / bool / int), a string\
        \ list (multi-choice), a ``{begin, end}`` date range, a list of\n``{name, path}`` files, or matrix\
        \ ``{row, column}`` items. Whatever keys you set are sent\nverbatim.\n\nExamples:\n    >>> SubmitBody.model_validate({\"\
        answer_short_text_1\": \"Ann\"}).model_dump()\n    {'answer_short_text_1': 'Ann'}"
      properties: {}
      title: SubmitBody
      type: object
    SubmitQuizResult:
      description: "What a respondent scored on a quiz (``quiz_result`` of a submission).\n\nExamples:\n\
        \    >>> SubmitQuizResult(show_format=\"score_with_total\", scores=7, total_scores=10).scores\n\
        \    7.0"
      properties:
        show_format:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'How the result is shown: score, percent or score_with_total.'
          title: Show Format
        scores:
          anyOf:
          - type: number
          - type: 'null'
          default: null
          description: Points scored, or the percentage.
          title: Scores
        total_scores:
          anyOf:
          - type: number
          - type: 'null'
          default: null
          description: Most points the quiz gives (``score_with_total`` only).
          title: Total Scores
      title: SubmitQuizResult
      type: object
    SubmitResult:
      description: "The success-page payload returned by ``POST …/form`` (``200 OK``).\n\nConfirms the\
        \ response was accepted (``answer_id`` / ``answer_key``) and carries the\nresult-page content\
        \ (title/subtitle, redirect, quiz scores, triggered integrations). Nested\npolymorphic blocks\
        \ (``redirect``, ``image``, ``payment``, ``styles``, ``integrations``) are\npassed through verbatim.\n\
        \nExamples:\n    >>> SubmitResult.model_validate({\"id\": \"686d\", \"answer_id\": 99}).answer_id\n\
        \    99"
      properties:
        id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form id (hex ObjectId string).
          title: Id
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form name.
          title: Name
        answer_id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Id of the saved response.
          title: Answer Id
        answer_key:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Key of the saved response.
          title: Answer Key
        title:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Title of the success page.
          title: Title
        subtitle:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Subtitle of the success page.
          title: Subtitle
        teaser:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether to show the teaser.
          title: Teaser
        footer:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether to show the footer.
          title: Footer
        share:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether sharing the result is enabled.
          title: Share
        fill_again:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether refilling the form is offered.
          title: Fill Again
        correct:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether correct quiz answers are shown.
          title: Correct
        quiz_result:
          anyOf:
          - $ref: '#/components/schemas/SubmitQuizResult'
          - type: 'null'
          default: null
          description: Result of the quiz, in the format the form shows it.
        stats:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          default: null
          description: Fill-statistics block.
          title: Stats
        integrations:
          description: Integrations triggered by the submit (id + type).
          items:
            additionalProperties: true
            type: object
          title: Integrations
          type: array
        redirect:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          default: null
          description: Post-submit redirect settings.
          title: Redirect
        image:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          default: null
          description: Image shown on the result page.
          title: Image
        payment:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          default: null
          description: Payment-form data, if any.
          title: Payment
        styles:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          default: null
          description: Form design styles.
          title: Styles
      title: SubmitResult
      type: object
    SubscriptionAttachments:
      description: "What a subscription attaches: answer files and fixed files.\n\nExamples:\n    >>>\
        \ SubscriptionAttachments(question=AttachmentQuestions(all=True)).question.all\n    True"
      properties:
        question:
          anyOf:
          - $ref: '#/components/schemas/AttachmentQuestions'
          - type: 'null'
          default: null
          description: File questions whose uploads are attached.
        static:
          anyOf:
          - items:
              $ref: '#/components/schemas/StaticAttachment'
            type: array
          - type: 'null'
          default: null
          description: Fixed files attached to every run.
          title: Static
      title: SubscriptionAttachments
      type: object
    SubscriptionHeader:
      description: "A name/value pair: an e-mail or HTTP header, a JSON-RPC or function parameter.\n\n\
        Examples:\n    >>> SubscriptionHeader(name=\"X-Source\", value=\"forms\").name\n    'X-Source'"
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Header or parameter name (max 255).
          title: Name
        value:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Value; may embed variables such as {form.name} (max 500).
          title: Value
        only_with_value:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Send it only when the value is not empty.
          title: Only With Value
      title: SubscriptionHeader
      type: object
    SubscriptionVariable:
      description: "A variable configured on a subscription and referenced from its texts by ``id``.\n\
        \nExamples:\n    >>> SubscriptionVariable(id=\"v1\", type=\"form.name\").type\n    'form.name'"
      properties:
        id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Variable id, referenced from the texts.
          title: Id
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Variable type, e.g. form.name or form.question_answer.
          title: Type
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Variable display name.
          title: Name
        renderer:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'How the value renders: txt, formatted, yfm, json, ….'
          title: Renderer
        filters:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          default: null
          description: 'Filters applied to the value: md5, base64, lower, upper, ….'
          title: Filters
        only_with_value:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Render only answered questions.
          title: Only With Value
        show_filenames:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Render file answers as file names.
          title: Show Filenames
        question:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question slug the variable reads (single-question types).
          title: Question
        questions:
          anyOf:
          - $ref: '#/components/schemas/VariableQuestions'
          - type: 'null'
          default: null
          description: Questions the variable reads (multi-question types).
        secret:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Secret value (write only).
          title: Secret
        version:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Variable format version (write only).
          title: Version
      title: SubscriptionVariable
      type: object
    SuggestQuestion:
      description: "Autocomplete/suggest answer backed by an external data source.\n\nExamples:\n    >>>\
        \ SuggestQuestion(label=\"Dept\", data_source=QuestionDataSource(name=\"departments\")).type\n\
        \    'suggest'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: 'Ignored by the API: a new question gets its own id, and an existing one is named
            in the path.'
          title: Id
        label:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question label / title.
          title: Label
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Stable machine slug.
          title: Slug
        comment:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Question hint / helper text.
          title: Comment
        placeholder:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Placeholder text shown in the empty input.
          title: Placeholder
        hidden:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Hide the question until its display conditions match.
          title: Hidden
        image:
          anyOf:
          - $ref: '#/components/schemas/QuestionImage'
          - type: 'null'
          default: null
          description: Image shown alongside the question.
        type:
          const: suggest
          default: suggest
          description: 'Discriminator: suggest.'
          title: Type
          type: string
        multichoice:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Allow selecting several values.
          title: Multichoice
        data_source:
          anyOf:
          - $ref: '#/components/schemas/QuestionDataSource'
          - type: 'null'
          default: null
          description: External source of suggestions.
        validators:
          anyOf:
          - items:
              $ref: '#/components/schemas/QuestionValidator'
            type: array
          - type: 'null'
          default: null
          description: Validation rules (required, external).
          title: Validators
      title: SuggestQuestion
      type: object
    Suggestion:
      additionalProperties: true
      description: "One fill-suggestion (``GET …/suggest`` item).\n\nSuggestions come in 26 ``layer``\
        \ shapes (country, city, staff person, tracker issue, …) that\nshare ``layer`` / ``id`` / ``text``\
        \ and add layer-specific keys (``country_id``,\n``population``, ``login``, ``email``, ``queue``,\
        \ …). One class reads them all: the keys a\nlayer does not have stay ``None``, and ``extra=\"\
        allow\"`` keeps a key of a layer Yandex adds.\n\nExamples:\n    >>> Suggestion.model_validate({\"\
        layer\": \"city\", \"id\": \"1\", \"text\": \"Berlin\"}).text\n    'Berlin'"
      properties:
        layer:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Suggestion type / data layer.
          title: Layer
        id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Suggestion object id.
          title: Id
        text:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Display text of the suggestion.
          title: Text
        orig_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Source-database id, where applicable.
          title: Orig Id
        country_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Id of the country (city).
          title: Country Id
        population:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Population of the city.
          title: Population
        city:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: City of the university.
          title: City
        region:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Region of the university.
          title: Region
        tracks_count:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Number of tracks in the music genre.
          title: Tracks Count
        address:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Address of the office.
          title: Address
        url:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Slug of the staff group.
          title: Url
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Kind of the staff group.
          title: Type
        role_scope:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Scope of the staff group.
          title: Role Scope
        full_name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Full name of the employee.
          title: Full Name
        login:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Login of the user.
          title: Login
        email:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Email of the user or employee.
          title: Email
        uid:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Passport uid of the user or employee.
          title: Uid
        yandex_uid:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Passport uid of the user or employee.
          title: Yandex Uid
        cloud_uid:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Cloud uid of the user.
          title: Cloud Uid
        avatar:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Avatar of the user or employee.
          title: Avatar
        group_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Id of the employee's staff group.
          title: Group Id
        department:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Department of the employee.
          title: Department
        office_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Id of the meeting room's office.
          title: Office Id
        floor_number:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Floor of the meeting room.
          title: Floor Number
        floor_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Id of the meeting room's floor.
          title: Floor Id
        row_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Universal id of the table row.
          title: Row Id
        parent_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Id of the parent row, for linked suggestions.
          title: Parent Id
        display_text:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Text to show for the table row.
          title: Display Text
        board:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Name of the sprint's agile board.
          title: Board
        queue:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Queue of the Tracker issue, component or field.
          title: Queue
        status:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Status of the Tracker issue.
          title: Status
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Slug of the Tracker field.
          title: Slug
      title: Suggestion
      type: object
    Survey:
      description: "A form/survey (``GET /v1/surveys`` item and ``GET /v1/surveys/{id}``).\n\n``id`` is\
        \ a hex ObjectId **string** (not numeric); ``answers`` is an int\nresponse count. The listing\
        \ returns the first block of fields; the settings\n(``texts``, ``styles``, ``quiz``, ``followers``,\
        \ …) come with a single form.\n\nExamples:\n    >>> Survey.model_validate({\"id\": \"686d\", \"\
        name\": \"F\", \"answers\": 444}).answers\n    444"
      properties:
        id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Id
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Name
        dir_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Dir Id
        collab_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Collab Id
        created:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Created
        modified:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Modified
        language:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Language
        is_published:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          title: Is Published
        is_public:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          title: Is Public
        is_banned:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          title: Is Banned
        answers:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          title: Answers
        is_favourite:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          title: Is Favourite
        hashed_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form id with a hash.
          title: Hashed Id
        author:
          anyOf:
          - $ref: '#/components/schemas/UserRef'
          - type: 'null'
          default: null
          description: Who created the form.
        need_auth:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the respondent must sign in to fill the form.
          title: Need Auth
        allow_multiple_answers:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether one respondent may fill the form more than once.
          title: Allow Multiple Answers
        show_last_answer:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the respondent's previous answer is filled in.
          title: Show Last Answer
        max_count:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Most responses the form accepts.
          title: Max Count
        texts:
          anyOf:
          - $ref: '#/components/schemas/SurveyTexts'
          - type: 'null'
          default: null
          description: Button labels and the message after submission.
        styles:
          anyOf:
          - $ref: '#/components/schemas/SurveyStyles'
          - type: 'null'
          default: null
          description: Design of the form.
        quiz:
          anyOf:
          - $ref: '#/components/schemas/SurveyQuiz'
          - type: 'null'
          default: null
          description: Quiz settings.
        auto_publication:
          anyOf:
          - $ref: '#/components/schemas/SurveyAutoPublication'
          - type: 'null'
          default: null
          description: When the form publishes and unpublishes itself.
        follow:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'How often integration errors are mailed: 5m, 1h or 1d.'
          title: Follow
        followers:
          anyOf:
          - items:
              $ref: '#/components/schemas/SurveyFollower'
            type: array
          - type: 'null'
          default: null
          description: Who is told about integration errors.
          title: Followers
        captcha:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Captcha asked before submission: std, ocr or nbg.'
          title: Captcha
        metric:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Yandex Metrica counter.
          title: Metric
        file_storage:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Link to the organization's own file storage.
          title: File Storage
        validator_url:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: URL that validates the answers from outside.
          title: Validator Url
        iframe:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the form may be published only in an iframe.
          title: Iframe
        footer:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether to show the footer.
          title: Footer
        teaser:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether to show the teaser.
          title: Teaser
        stats:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether to show statistics on the page after submission.
          title: Stats
        share:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether sharing the form is offered.
          title: Share
        fill_again:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether filling the form again is offered.
          title: Fill Again
      title: Survey
      type: object
    SurveyApiKey:
      description: "An API key a form's integrations use (``api_keys`` item of a request).\n\nExamples:\n\
        \    >>> SurveyApiKey(name=\"crm\", value=\"secret\").name\n    'crm'"
      properties:
        name:
          description: Name of the key.
          title: Name
          type: string
        id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Id of an existing key.
          title: Id
        value:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Value of the key.
          title: Value
        secure:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the value is stored encrypted (the API's default).
          title: Secure
      required:
      - name
      title: SurveyApiKey
      type: object
    SurveyAutoPublication:
      description: "When a form publishes and unpublishes itself (``auto_publication``).\n\nExamples:\n\
        \    >>> SurveyAutoPublication(enabled=True, date_close=\"2026-12-31T00:00:00Z\").enabled\n  \
        \  True"
      properties:
        enabled:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the publication state is managed automatically.
          title: Enabled
        date_open:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: ISO-8601 time the form opens.
          title: Date Open
        date_close:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: ISO-8601 time the form closes.
          title: Date Close
      title: SurveyAutoPublication
      type: object
    SurveyCreate:
      description: "Typed request body for creating a form (``POST /surveys``).\n\nEvery setting the API\
        \ publishes is a field. The CLI has an option for the common ones and\ntakes the rest through\
        \ its repeatable ``--field key=value`` JSON escape, merged onto this\nbody. Unset (``None``) fields\
        \ are dropped before the request is sent. ``language``,\n``is_published`` and ``is_public`` are\
        \ accepted and ignored by the API (checked live on\n2026-10-04): they stay for callers that send\
        \ them, and setting one logs a warning.\n\nExamples:\n    >>> SurveyCreate(name=\"Onboarding survey\"\
        , need_auth=True).name\n    'Onboarding survey'"
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form name (title).
          title: Name
        language:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Ignored by the API: the reply reports the language, a request cannot set it.'
          title: Language
        texts:
          anyOf:
          - $ref: '#/components/schemas/SurveyTexts'
          - type: 'null'
          default: null
          description: Button labels and the post-submission message.
        is_published:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: 'Ignored by the API: publish a form with ``surveys publish`` instead.'
          title: Is Published
        is_public:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: 'Ignored by the API: the reply reports whether the form is public, a request cannot
            set it.'
          title: Is Public
        need_auth:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Require the respondent to sign in before filling the form.
          title: Need Auth
        allow_multiple_answers:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Allow one respondent to submit the form more than once.
          title: Allow Multiple Answers
        max_count:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Maximum number of responses the form will accept.
          title: Max Count
        show_last_answer:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Fill in the respondent's previous answer.
          title: Show Last Answer
        styles:
          anyOf:
          - $ref: '#/components/schemas/SurveyStyles'
          - type: 'null'
          default: null
          description: Design of the form.
        quiz:
          anyOf:
          - $ref: '#/components/schemas/SurveyQuiz'
          - type: 'null'
          default: null
          description: Quiz settings.
        auto_publication:
          anyOf:
          - $ref: '#/components/schemas/SurveyAutoPublication'
          - type: 'null'
          default: null
          description: When the form publishes and unpublishes itself.
        api_keys:
          anyOf:
          - items:
              $ref: '#/components/schemas/SurveyApiKey'
            type: array
          - type: 'null'
          default: null
          description: API keys the form's integrations use.
          title: Api Keys
        follow:
          anyOf:
          - enum:
            - 5m
            - 1h
            - 1d
            type: string
          - type: 'null'
          default: null
          description: 'How often integration errors are mailed: 5m, 1h or 1d.'
          title: Follow
        captcha:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Captcha asked before submission: std, ocr or nbg.'
          title: Captcha
        metric:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Yandex Metrica counter.
          title: Metric
        file_storage:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Link to the organization's own file storage.
          title: File Storage
        validator_url:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: URL that validates the answers from outside.
          title: Validator Url
        iframe:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Allow publishing the form only in an iframe.
          title: Iframe
        footer:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Show the footer.
          title: Footer
        teaser:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Show the teaser.
          title: Teaser
        stats:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Show statistics on the page after submission.
          title: Stats
        share:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Offer sharing the form.
          title: Share
        fill_again:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Offer filling the form again.
          title: Fill Again
      title: SurveyCreate
      type: object
    SurveyFollower:
      description: "Who is told about a form's integration errors: a user or a mailing list (``followers``).\n\
        \nExamples:\n    >>> SurveyFollower.model_validate({\"id\": \"team@x.test\", \"type\": \"mail_list\"\
        }).type\n    'mail_list'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: string
          - type: 'null'
          default: null
          description: Id of the user, or the address of the mailing list.
          title: Id
        type:
          anyOf:
          - enum:
            - user
            - mail_list
            type: string
          - type: 'null'
          default: null
          description: '``user`` or ``mail_list``.'
          title: Type
        email:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Address of the user or the list.
          title: Email
        uid:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Passport uid of the user.
          title: Uid
        cloud_uid:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Cloud uid of the user.
          title: Cloud Uid
        login:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Login of the user.
          title: Login
        display:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Name to show for the user.
          title: Display
        avatar:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Avatar of the user.
          title: Avatar
        is_superuser:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether a superuser.
          title: Is Superuser
        is_staff:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether support staff.
          title: Is Staff
      title: SurveyFollower
      type: object
    SurveyQuiz:
      description: "The quiz settings of a form (``quiz``).\n\n``question_count`` and ``total_scores``\
        \ are computed by the API and only come back in a\nreply.\n\nExamples:\n    >>> SurveyQuiz(calc_method=\"\
        scores\", items=[]).calc_method\n    'scores'"
      properties:
        show_results:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether to show the result.
          title: Show Results
        show_format:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'How the result is shown: score_with_total, score, percent, text or off.'
          title: Show Format
        show_correct:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether to show the correct answers.
          title: Show Correct
        calc_method:
          anyOf:
          - enum:
            - range
            - scores
            type: string
          - type: 'null'
          default: null
          description: 'How points are counted: ``range`` or ``scores``.'
          title: Calc Method
        pass_scores:
          anyOf:
          - type: number
          - type: 'null'
          default: null
          description: Points needed to pass.
          title: Pass Scores
        question_count:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Number of quiz questions (reply only).
          title: Question Count
        total_scores:
          anyOf:
          - type: number
          - type: 'null'
          default: null
          description: Most points the quiz gives (reply only).
          title: Total Scores
        items:
          anyOf:
          - items:
              $ref: '#/components/schemas/SurveyQuizItem'
            type: array
          - type: 'null'
          default: null
          description: Result ranges of the quiz.
          title: Items
      title: SurveyQuiz
      type: object
    SurveyQuizItem:
      description: "One result range of a quiz: what the respondent sees for a score in it.\n\nExamples:\n\
        \    >>> SurveyQuizItem(title=\"Passed\", upper_limit=10).title\n    'Passed'"
      properties:
        title:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Heading of the result page.
          title: Title
        description:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Text of the result page.
          title: Description
        image:
          anyOf:
          - $ref: '#/components/schemas/Image'
          - type: 'null'
          default: null
          description: Image of the result page.
        upper_limit:
          anyOf:
          - type: number
          - type: 'null'
          default: null
          description: Upper bound of the range (for ``calc_method`` ``range``).
          title: Upper Limit
      title: SurveyQuizItem
      type: object
    SurveyStyleImages:
      description: "The background images of a form's design (``styles.images``).\n\nExamples:\n    >>>\
        \ SurveyStyleImages.model_validate({\"page\": {\"id\": 5}}).page.id\n    5"
      properties:
        page:
          anyOf:
          - $ref: '#/components/schemas/Image'
          - type: 'null'
          default: null
          description: Background behind the text.
        form:
          anyOf:
          - $ref: '#/components/schemas/Image'
          - type: 'null'
          default: null
          description: Background of the form itself.
      title: SurveyStyleImages
      type: object
    SurveyStyles:
      description: "The design of a form (``styles``): a built-in template or custom settings.\n\nExamples:\n\
        \    >>> SurveyStyles.model_validate({\"id\": 3, \"type\": \"default\", \"custom\": {}}).type\n\
        \    'default'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Id of the design; in a request, the built-in template to apply.
          title: Id
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Name of the design.
          title: Name
        type:
          anyOf:
          - enum:
            - default
            - custom
            type: string
          - type: 'null'
          default: null
          description: '``default`` (a built-in template) or ``custom``.'
          title: Type
        custom:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          default: null
          description: Custom design settings, as the form editor stores them.
          title: Custom
        images:
          anyOf:
          - $ref: '#/components/schemas/SurveyStyleImages'
          - type: 'null'
          default: null
          description: Background images.
      title: SurveyStyles
      type: object
    SurveyTexts:
      description: "Button labels and the post-submission message of a form (the ``texts`` write sub-object).\n\
        \nEvery field is optional — only the labels you set are sent; the rest keep the form's\ncurrent\
        \ values. Passed inside :class:`SurveyCreate` / :class:`SurveyUpdate`.\n\nExamples:\n    >>> SurveyTexts(title=\"\
        Thanks!\", submit=\"Send\").submit\n    'Send'"
      properties:
        title:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Heading shown on the page after a response is submitted.
          title: Title
        subtitle:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Body text shown on the page after a response is submitted.
          title: Subtitle
        submit:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Label of the Submit button.
          title: Submit
        back:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Label of the Back button.
          title: Back
        next:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Label of the Next button.
          title: Next
        redirect:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Label of the website-redirect button.
          title: Redirect
      title: SurveyTexts
      type: object
    SurveyUpdate:
      description: "Typed request body for modifying a form (``PATCH /surveys/{survey_id}``).\n\nSame\
        \ optional fields as :class:`SurveyCreate`; only the fields you set are sent, so a\npartial patch\
        \ never disturbs untouched settings.\n\nExamples:\n    >>> SurveyUpdate(is_favourite=True).is_favourite\n\
        \    True"
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Form name (title).
          title: Name
        language:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Ignored by the API: the reply reports the language, a request cannot set it.'
          title: Language
        texts:
          anyOf:
          - $ref: '#/components/schemas/SurveyTexts'
          - type: 'null'
          default: null
          description: Button labels and the post-submission message.
        is_published:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: 'Ignored by the API: publish a form with ``surveys publish`` instead.'
          title: Is Published
        is_public:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: 'Ignored by the API: the reply reports whether the form is public, a request cannot
            set it.'
          title: Is Public
        need_auth:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Require the respondent to sign in before filling the form.
          title: Need Auth
        allow_multiple_answers:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Allow one respondent to submit the form more than once.
          title: Allow Multiple Answers
        max_count:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Maximum number of responses the form will accept.
          title: Max Count
        show_last_answer:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Fill in the respondent's previous answer.
          title: Show Last Answer
        styles:
          anyOf:
          - $ref: '#/components/schemas/SurveyStyles'
          - type: 'null'
          default: null
          description: Design of the form.
        quiz:
          anyOf:
          - $ref: '#/components/schemas/SurveyQuiz'
          - type: 'null'
          default: null
          description: Quiz settings.
        auto_publication:
          anyOf:
          - $ref: '#/components/schemas/SurveyAutoPublication'
          - type: 'null'
          default: null
          description: When the form publishes and unpublishes itself.
        api_keys:
          anyOf:
          - items:
              $ref: '#/components/schemas/SurveyApiKey'
            type: array
          - type: 'null'
          default: null
          description: API keys the form's integrations use.
          title: Api Keys
        follow:
          anyOf:
          - enum:
            - 5m
            - 1h
            - 1d
            type: string
          - type: 'null'
          default: null
          description: 'How often integration errors are mailed: 5m, 1h or 1d.'
          title: Follow
        captcha:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Captcha asked before submission: std, ocr or nbg.'
          title: Captcha
        metric:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Yandex Metrica counter.
          title: Metric
        file_storage:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Link to the organization's own file storage.
          title: File Storage
        validator_url:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: URL that validates the answers from outside.
          title: Validator Url
        iframe:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Allow publishing the form only in an iframe.
          title: Iframe
        footer:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Show the footer.
          title: Footer
        teaser:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Show the teaser.
          title: Teaser
        stats:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Show statistics on the page after submission.
          title: Stats
        share:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Offer sharing the form.
          title: Share
        fill_again:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Offer filling the form again.
          title: Fill Again
        is_favourite:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Add the form to the caller's favourites, or remove it.
          title: Is Favourite
      title: SurveyUpdate
      type: object
    SurveysResponse:
      description: "Envelope for ``GET /v1/surveys`` — ``{links, result:[Survey]}``.\n\nInternal per-page\
        \ parse type used by ``SurveysClient._list_page``.\n\nExamples:\n    >>> SurveysResponse.model_validate({\"\
        result\": [{\"id\": \"a\"}]}).result[0].id\n    'a'"
      properties:
        links:
          additionalProperties: true
          title: Links
          type: object
        result:
          items:
            $ref: '#/components/schemas/Survey'
          title: Result
          type: array
      title: SurveysResponse
      type: object
    TrackerCommentSubscription:
      description: "Comment on a Tracker issue.\n\nExamples:\n    >>> TrackerCommentSubscription(issue=\"\
        SUPPORT-1\").type\n    'tracker_comment'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Subscription id (integer, read only).
          title: Id
        active:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the integration runs.
          title: Active
        follow:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Notify the form's followers about the run.
          title: Follow
        variables:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionVariable'
            type: array
          - type: 'null'
          default: null
          description: Variables referenced from the subscription's texts.
          title: Variables
        type:
          const: tracker_comment
          default: tracker_comment
          description: 'Discriminator: tracker_comment.'
          title: Type
          type: string
        issue:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Issue key to comment on.
          title: Issue
        body:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Comment text.
          title: Body
        fields:
          anyOf:
          - items:
              $ref: '#/components/schemas/TrackerField'
            type: array
          - type: 'null'
          default: null
          description: Issue fields to set.
          title: Fields
        attachments:
          anyOf:
          - $ref: '#/components/schemas/SubscriptionAttachments'
          - type: 'null'
          default: null
          description: Files to attach.
      title: TrackerCommentSubscription
      type: object
    TrackerField:
      description: "One Tracker issue field a tracker subscription fills.\n\nExamples:\n    >>> TrackerField(key=\"\
        tags\", value=\"forms\").value\n    'forms'"
      properties:
        key:
          anyOf:
          - type: string
          - $ref: '#/components/schemas/TrackerFieldKey'
          - type: 'null'
          default: null
          description: 'Field key: a slug, or an object with slug/name/type.'
          title: Key
        value:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Field value; may embed variables.
          title: Value
        only_with_value:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Set the field only when the value is not empty.
          title: Only With Value
      title: TrackerField
      type: object
    TrackerFieldKey:
      description: "A Tracker issue field addressed by slug.\n\nExamples:\n    >>> TrackerFieldKey(slug=\"\
        tags\").slug\n    'tags'"
      properties:
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Tracker field key, e.g. tags.
          title: Slug
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Field display name.
          title: Name
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Field type (default string).
          title: Type
      title: TrackerFieldKey
      type: object
    TrackerSubscription:
      description: "Create a Tracker issue.\n\nExamples:\n    >>> TrackerSubscription(queue=\"SUPPORT\"\
        ).type\n    'tracker'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Subscription id (integer, read only).
          title: Id
        active:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the integration runs.
          title: Active
        follow:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Notify the form's followers about the run.
          title: Follow
        variables:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionVariable'
            type: array
          - type: 'null'
          default: null
          description: Variables referenced from the subscription's texts.
          title: Variables
        type:
          const: tracker
          default: tracker
          description: 'Discriminator: tracker.'
          title: Type
          type: string
        subject:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Issue summary.
          title: Subject
        body:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Issue description.
          title: Body
        queue:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Queue key (max 255).
          title: Queue
        parent:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Parent issue key.
          title: Parent
        author:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Issue author login.
          title: Author
        assignee:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Assignee login.
          title: Assignee
        issue_type:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Issue type id.
          title: Issue Type
        priority:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Priority id.
          title: Priority
        fields:
          anyOf:
          - items:
              $ref: '#/components/schemas/TrackerField'
            type: array
          - type: 'null'
          default: null
          description: Other issue fields.
          title: Fields
        attachments:
          anyOf:
          - $ref: '#/components/schemas/SubscriptionAttachments'
          - type: 'null'
          default: null
          description: Files to attach.
      title: TrackerSubscription
      type: object
    User:
      description: "The authenticated user (``GET /v1/users/me``) — a safe auth probe.\n\nExamples:\n\
        \    >>> User.model_validate({\"id\": 1, \"uid\": \"u\", \"cloud_uid\": \"c\", \"email\": \"e@x\"\
        }).email\n    'e@x'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          title: Id
        uid:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Uid
        cloud_uid:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Cloud Uid
        login:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Login of the user.
          title: Login
        display:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Name to show for the user.
          title: Display
        email:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          title: Email
      title: User
      type: object
    UserIdentity:
      description: "A user by Yandex ID ``uid`` or Yandex Cloud ``cloud_uid``.\n\nExamples:\n    >>> UserIdentity(uid=\"\
        101523906\").uid\n    '101523906'"
      properties:
        uid:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Yandex ID user id.
          title: Uid
        cloud_uid:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Yandex Cloud user id.
          title: Cloud Uid
      title: UserIdentity
      type: object
    UserRef:
      description: "A user as Forms lists them: identity, login and display name.\n\nExamples:\n    >>>\
        \ UserRef.model_validate({\"identity\": {\"uid\": \"1\"}, \"username\": \"ivan\"}).username\n\
        \    'ivan'"
      properties:
        identity:
          anyOf:
          - $ref: '#/components/schemas/UserIdentity'
          - type: 'null'
          default: null
          description: The user's ids.
        username:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Login.
          title: Username
        display_name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Display name.
          title: Display Name
      title: UserRef
      type: object
    VariableCategory:
      description: "The group a variable type belongs to.\n\nExamples:\n    >>> VariableCategory(type=\"\
        form\", name=\"Форма\").type\n    'form'"
      properties:
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Category: tracker, form, user, quiz, request, browser, ….'
          title: Type
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Category display name.
          title: Name
      title: VariableCategory
      type: object
    VariableInfo:
      description: "A variable type an integration of this form can reference.\n\nExamples:\n    >>> VariableInfo.model_validate(\n\
        \    ...     {\"type\": \"form.question_answer\", \"arguments\": [\"question\"]}\n    ... ).arguments\n\
        \    ['question']"
      properties:
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Variable type, e.g. form.answer_url or user.email.
          title: Type
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Variable display name.
          title: Name
        category:
          anyOf:
          - $ref: '#/components/schemas/VariableCategory'
          - type: 'null'
          default: null
          description: The group the variable belongs to.
        filters:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          default: null
          description: Which questions the variable accepts, as filter criteria.
          title: Filters
        arguments:
          anyOf:
          - items: {}
            type: array
          - type: 'null'
          default: null
          description: Arguments the variable takes, e.g. question, show_filenames.
          title: Arguments
        renderers:
          anyOf:
          - items:
              $ref: '#/components/schemas/VariableRenderer'
            type: array
          - type: 'null'
          default: null
          description: Ways the variable's value can render.
          title: Renderers
      title: VariableInfo
      type: object
    VariableQuestions:
      description: "Which questions a variable covers (``all``, or the listed slugs).\n\nExamples:\n \
        \   >>> VariableQuestions(all=False, items=[\"q1\"]).items\n    ['q1']"
      properties:
        all:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Cover every question of the form.
          title: All
        items:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          default: null
          description: Slugs of the covered questions.
          title: Items
      title: VariableQuestions
      type: object
    VariableRenderer:
      description: "One way a variable's value can render.\n\nExamples:\n    >>> VariableRenderer(type=\"\
        json\", name=\"JSON\").type\n    'json'"
      properties:
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: 'Renderer: txt, formatted, yfm, json, dir_staff.*.'
          title: Type
        name:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Renderer display name.
          title: Name
      title: VariableRenderer
      type: object
    WikiField:
      description: "One Wiki grid cell a wiki subscription fills.\n\nExamples:\n    >>> WikiField(key=WikiFieldKey(slug=\"\
        name\", type=\"string\"), value=\"{form.name}\").value\n    '{form.name}'"
      properties:
        key:
          anyOf:
          - $ref: '#/components/schemas/WikiFieldKey'
          - type: 'null'
          default: null
          description: The grid column.
        value:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Cell value; may embed variables.
          title: Value
      title: WikiField
      type: object
    WikiFieldKey:
      description: "A Wiki grid column addressed by slug and type.\n\nExamples:\n    >>> WikiFieldKey(slug=\"\
        name\", type=\"string\").type\n    'string'"
      properties:
        slug:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Column slug.
          title: Slug
        type:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Column type.
          title: Type
      title: WikiFieldKey
      type: object
    WikiGrid:
      description: "A Wiki grid a wiki subscription appends rows to.\n\nExamples:\n    >>> WikiGrid(grid_id=\"\
        g1\", cols=[]).grid_id\n    'g1'"
      properties:
        grid_id:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Grid id.
          title: Grid Id
        title:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Grid title.
          title: Title
        cols:
          anyOf:
          - items:
              $ref: '#/components/schemas/WikiField'
            type: array
          - type: 'null'
          default: null
          description: The cells of a new row.
          title: Cols
      title: WikiGrid
      type: object
    WikiSubscription:
      description: "Write to a Wiki page (text, or a row of a grid).\n\nExamples:\n    >>> WikiSubscription(supertag=\"\
        team/answers\").type\n    'wiki'"
      properties:
        id:
          anyOf:
          - type: integer
          - type: 'null'
          default: null
          description: Subscription id (integer, read only).
          title: Id
        active:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Whether the integration runs.
          title: Active
        follow:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Notify the form's followers about the run.
          title: Follow
        variables:
          anyOf:
          - items:
              $ref: '#/components/schemas/SubscriptionVariable'
            type: array
          - type: 'null'
          default: null
          description: Variables referenced from the subscription's texts.
          title: Variables
        type:
          const: wiki
          default: wiki
          description: 'Discriminator: wiki.'
          title: Type
          type: string
        supertag:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Wiki page slug (max 255).
          title: Supertag
        body:
          anyOf:
          - type: string
          - type: 'null'
          default: null
          description: Text to write.
          title: Body
        insert_to_begin:
          anyOf:
          - type: boolean
          - type: 'null'
          default: null
          description: Insert at the top of the page instead of the bottom.
          title: Insert To Begin
        grid_data:
          anyOf:
          - items:
              $ref: '#/components/schemas/WikiField'
            type: array
          - $ref: '#/components/schemas/WikiGrid'
          - type: 'null'
          default: null
          description: 'Grid row to add: a list of cells, or a grid with its cells.'
          title: Grid Data
      title: WikiSubscription
      type: object
