---
openapi: 3.0.2
info:
  contact:
    email: support@mongodb.com
    name: MongoDB Support
    url: https://support.mongodb.com/help
  description: OpenAPI specification for MongoDB Relational Migrator tool
  license:
    name: MongoDB, Inc. Technology Evaluation Agreement
    url: https://www.mongodb.com/legal
  title: MongoDB Relational Migrator REST API
  version: 1.18.1
servers:
- url: http://127.0.0.1:8278/api/v1
paths:
  "/analysis/{projectId}/task":
    get:
      operationId: getAnalysisTask
      description: Get pre-migration analysis task by `projectId`.
      parameters:
      - name: projectId
        in: path
        description: Project ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/analysis-task"
        '404':
          description: Not found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Analysis
    post:
      operationId: createAnalysisTask
      description: Create a task for pre-migration analysis.
      parameters:
      - name: projectId
        in: path
        description: Project ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/analysis-task-create-request"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/analysis-task"
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Analysis
  "/analysis/{projectId}/task/cancel":
    post:
      operationId: cancelAnalysisTask
      description: Cancel a running pre-migration analysis task.
      parameters:
      - name: projectId
        in: path
        description: Project ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/analysis-task"
        '404':
          description: Not found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Analysis
  "/analysis/{projectId}/report":
    get:
      operationId: getReport
      description: Get a pre-migration analysis report.
      parameters:
      - name: projectId
        in: path
        description: Project ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/analysis-report"
        '404':
          description: Not found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Analysis
  "/jobs":
    get:
      operationId: getJobs
      description: Get all migration jobs
      parameters:
      - name: sort
        in: query
        description: Order in which to retrieve the results
        required: false
        schema:
          type: string
          default: submittedAt,DESC
          pattern: "^\\w+,(DESC|ASC)$"
        example: submittedAt,DESC
      - name: limit
        in: query
        description: Limit the results
        required: false
        schema:
          type: integer
          minimum: 0
        example: 20
      - name: type
        in: query
        description: Filter jobs to only of a specific job type
        required: false
        schema:
          "$ref": "#/components/schemas/migration-jobs-get-type"
        example: IN_PROGRESS
      - name: projectId
        in: query
        description: Filter jobs by projectId
        required: false
        schema:
          "$ref": "#/components/schemas/id"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/migration-job-status"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Job
    post:
      operationId: createJob
      description: Post a new migration job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/post-migration-job-request"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/migration-job-status"
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Job
  "/jobs/{jobId}":
    get:
      operationId: getJob
      description: Get the status of a migration job by ID
      parameters:
      - name: jobId
        in: path
        description: Job ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/migration-job-status"
        '404':
          description: Not found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Job
  "/jobs/{jobId}/pause":
    post:
      operationId: pauseJob
      description: Pause a running migration job
      parameters:
      - name: jobId
        in: path
        description: Job ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/migration-job-status"
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '404':
          description: Not found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Job
  "/jobs/{jobId}/resume":
    post:
      operationId: resumeJob
      description: Resume a paused migration job
      parameters:
      - name: jobId
        in: path
        description: Job ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/migration-job-status"
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '404':
          description: Not found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Job
  "/jobs/{jobId}/stop":
    post:
      operationId: stopJob
      description: Stop a running migration job
      parameters:
      - name: jobId
        in: path
        description: Job ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/migration-job-status"
        '404':
          description: Not found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Job
  "/jobs/{jobId}/logs":
    get:
      operationId: getJobLogs
      description: Get the events of a migration job
      parameters:
      - name: jobId
        in: path
        description: Job ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      - name: limit
        in: query
        description: Limit the number of events
        schema:
          type: integer
          default: 1000
          minimum: 0
      - name: offset
        in: query
        description: the number of events since the most recent event
        schema:
          type: integer
          default: 0
          minimum: 0
      - name: eventType
        in: query
        description: filter by a specific job event type
        required: false
        schema:
          "$ref": "#/components/schemas/job-event-type"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/job-update"
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '404':
          description: Not found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Job
  "/jobs/{jobId}/logs/download":
    get:
      operationId: downloadJobLogs
      description: Downloads the events of a job
      parameters:
      - name: jobId
        in: path
        description: Job ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      responses:
        '200':
          description: OK
          content:
            application/zip:
              schema:
                type: string
                format: binary
        '404':
          description: Not found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Job
  "/project":
    get:
      operationId: getProjects
      description: Get all projects
      parameters:
      - name: sort
        in: query
        description: Order in which to retrieve the results
        required: false
        schema:
          type: string
          default: lastModified,DESC
          pattern: "^\\w+,(DESC|ASC)$"
        example: lastModified,DESC
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  "$ref": "#/components/schemas/project-descriptor-summary"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Project
  "/project/import":
    post:
      operationId: importProject
      description: Imports a project from an export file
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ProjectDescriptor"
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Project
  "/project/{projectId}/collections":
    get:
      operationId: getCollections
      description: Get all collections belonging to a project
      parameters:
      - name: projectId
        in: path
        description: Project ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/project-collections"
        '404':
          description: Not found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Project
  "/project/{projectId}/export":
    get:
      operationId: exportProject
      description: Export an existing project
      parameters:
      - name: projectId
        in: path
        description: Project ID
        required: true
        schema:
          "$ref": "#/components/schemas/id"
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/export-file"
        '404':
          description: Not found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/error-response"
      tags:
      - Project
components:
  schemas:
    id:
      type: string
      pattern: "^[A-Za-z0-9\\-]+$"
    analysis-task:
      type: object
      properties:
        projectId:
          "$ref": "#/components/schemas/id"
        status:
          type: string
          enum:
          - RUNNING
          - FAILED
          - CANCELLED
          - COMPLETED
        submittedAt:
          type: string
          format: date-time
      additionalProperties: false
      required:
      - projectId
      - status
      - submittedAt
    error-response:
      type: object
      properties:
        errorType:
          description: An error category identifying what kind of error occurred.
          type: string
          example: VALIDATION_ERROR
        message:
          description: A human-readable explanation of what went wrong.
          type: string
        timestamp:
          description: The date and time the error occurred.
          type: string
          format: date-time
        issues:
          description: The individual problems that make up this error.
          type: array
          items:
            "$ref": "#/components/schemas/error-response-issue"
          minItems: 1
      additionalProperties: false
      required:
      - errorType
      - message
      - timestamp
    analysis-task-create-request:
      type: object
      properties:
        jdbcConnectionDetails:
          "$ref": "#/components/schemas/jdbc-connection-details"
      additionalProperties: false
      required:
      - jdbcConnectionDetails
    analysis-report:
      type: object
      properties:
        id:
          "$ref": "#/components/schemas/id"
        projectId:
          "$ref": "#/components/schemas/id"
        generatedAt:
          type: string
          format: date-time
        preflightChecks:
          type: array
          items:
            "$ref": "#/components/schemas/analysis-report-preflight-checks"
        rules:
          type: array
          items:
            "$ref": "#/components/schemas/analysis-report-rules"
        dbMetrics:
          "$ref": "#/components/schemas/analysis-report-db-metrics"
        databaseMetadata:
          "$ref": "#/components/schemas/analysis-report-database-metadata"
        healthScore:
          type: number
        resolvedRules:
          type: array
          items:
            type: string
        takeaways:
          type: array
          items:
            "$ref": "#/components/schemas/analysis-report-confidence-takeaway"
        uniqueDboAlerts:
          "$ref": "#/components/schemas/analysis-report-rule-type-count-by-severity"
        detectionCountsByDboType:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/detection-category-counts"
        errors:
          type: array
          items:
            type: string
      additionalProperties: false
      required:
      - databaseMetadata
      - dbMetrics
      - detectionCountsByDboType
      - generatedAt
      - healthScore
      - id
      - projectId
      - resolvedRules
      - rules
      - takeaways
      - uniqueDboAlerts
    jdbc-connection-details:
      type: object
      properties:
        id:
          type: string
        type:
          "$ref": "#/components/schemas/database-type"
        url:
          type: string
        user:
          type: string
        password:
          type: string
        savePassword:
          type: boolean
          default: false
        existingConnectionId:
          type: string
        oraclePdbName:
          type: string
        isManualUri:
          type: boolean
          default: false
      additionalProperties: false
      required:
      - type
      - url
    mongodb-connection-details:
      type: object
      properties:
        id:
          type: string
        connectionString:
          type: string
        savePassword:
          type: boolean
          default: false
        existingConnectionId:
          type: string
      additionalProperties: false
      required:
      - connectionString
    migration-job-status:
      type: object
      properties:
        id:
          "$ref": "#/components/schemas/id"
        projectId:
          "$ref": "#/components/schemas/id"
        status:
          type: string
          enum:
          - NOT_STARTED
          - RUNNING
          - FAILED
          - CANCELLING
          - CANCELLED
          - COMPLETED
          - CLEANING_UP
          - PAUSED
        cdcStatus:
          type: string
          default: NOT_STARTED
          enum:
          - NOT_STARTED
          - RUNNING
          - COMPLETING
          - COMPLETED
          - FAILED
          - CANCELLED
          - PAUSED
        verificationJobId:
          type: string
        options:
          "$ref": "#/components/schemas/migration-job-descriptor-options"
        jdbcConnectionString:
          type: string
        mongoDbConnectionString:
          type: string
        submittedAt:
          type: string
          format: date-time
        statistics:
          "$ref": "#/components/schemas/migration-job-statistics"
        cdcStatistics:
          "$ref": "#/components/schemas/cdc-job-statistics"
        jmxConnectivity:
          "$ref": "#/components/schemas/jmx-connectivity"
        connectorStatus:
          "$ref": "#/components/schemas/connector-status"
        failureError:
          "$ref": "#/components/schemas/failureError"
        metadata:
          "$ref": "#/components/schemas/migration_job_status_metadata"
        relationalTableFilters:
          "$ref": "#/components/schemas/relational-table-filters"
        collectionFilters:
          "$ref": "#/components/schemas/collection-filters"
      additionalProperties: false
      required:
      - id
      - options
      - projectId
      - status
      - submittedAt
    migration-jobs-get-type:
      type: string
      enum:
      - IN_PROGRESS
    post-migration-job-request:
      type: object
      properties:
        projectId:
          type: string
        jdbcConnectionDetails:
          "$ref": "#/components/schemas/jdbc-connection-details"
        mongodbConnectionDetails:
          "$ref": "#/components/schemas/mongodb-connection-details"
        options:
          "$ref": "#/components/schemas/migration-job-descriptor-options"
        verification:
          "$ref": "#/components/schemas/migration-verification"
        relationalTableFilters:
          "$ref": "#/components/schemas/relational-table-filters"
        collectionFilters:
          "$ref": "#/components/schemas/collection-filters"
      additionalProperties: false
      required:
      - jdbcConnectionDetails
      - mongodbConnectionDetails
      - options
      - projectId
      - verification
    job-event-type:
      type: string
      enum:
      - ERROR
      - WARNING
      - INFO
    job-update:
      type: object
      properties:
        eventType:
          "$ref": "#/components/schemas/job-event-type"
        message:
          type: string
        details:
          type: string
        timestamp:
          type: string
          format: date-time
        stackTrace:
          type: array
          items:
            type: string
        locationType:
          type: string
          enum:
          - TABLE
          - COLLECTION
        locationName:
          type: string
        fieldName:
          type: string
        key:
          type: object
          additionalProperties:
            type: string
        errorType:
          type: string
          example: DuplicateKeyError
      required:
      - eventType
      - message
      - timestamp
    project-descriptor-summary:
      type: object
      properties:
        id:
          "$ref": "#/components/schemas/id"
        jdbcId:
          "$ref": "#/components/schemas/id"
        mongodbId:
          "$ref": "#/components/schemas/id"
        name:
          type: string
          maxLength: 50
          minLength: 1
        type:
          "$ref": "#/components/schemas/database-type"
        lastModified:
          type: string
          format: date-time
      additionalProperties: false
      required:
      - id
      - name
      - type
    ProjectDescriptor:
      type: object
      allOf:
      - "$ref": "#/components/schemas/ProjectDescriptorBase"
      - properties:
          id:
            "$ref": "#/components/schemas/id"
        required:
        - id
        type: object
    ProjectDescriptorBase:
      type: object
      properties:
        name:
          "$ref": "#/components/schemas/ProjectName"
        type:
          "$ref": "#/components/schemas/database-type"
        lastModified:
          type: string
          format: date-time
        schemasId:
          "$ref": "#/components/schemas/id"
        jdbcId:
          "$ref": "#/components/schemas/id"
        mongodbId:
          "$ref": "#/components/schemas/id"
        content:
          "$ref": "#/components/schemas/ProjectDescriptorContent"
        connectionDetails:
          "$ref": "#/components/schemas/ProjectDescriptorBase_connectionDetails"
        isSampleProject:
          type: boolean
      additionalProperties: false
      required:
      - content
      - name
      - schemasId
      - type
    ProjectName:
      type: string
      maxLength: 50
      minLength: 1
    ProjectDescriptorContent:
      type: object
      properties:
        settings:
          "$ref": "#/components/schemas/migration-settings"
        collections:
          "$ref": "#/components/schemas/migration-collections"
        mappings:
          "$ref": "#/components/schemas/migration-mappings"
        relationships:
          "$ref": "#/components/schemas/migration-relationships"
        diagrams:
          "$ref": "#/components/schemas/project-diagrams"
        tables:
          "$ref": "#/components/schemas/project-tables"
      additionalProperties: false
      required:
      - collections
      - diagrams
      - mappings
      - relationships
      - settings
      - tables
    project-collections:
      description: List of collections in a project
      type: array
      items:
        type: string
    export-file:
      type: object
      properties:
        version:
          description: The descriptor schema version, as a three-part semantic version
            (major.minor.patch).
          type: string
          pattern: "^\\d+\\.\\d+\\.\\d+$"
        project:
          "$ref": "#/components/schemas/ProjectDescriptor"
        schema:
          "$ref": "#/components/schemas/project-descriptor-schemas"
      additionalProperties: false
      required:
      - project
      - schema
      - version
    migration-job-statistics-preview:
      type: object
      properties:
        totalTableCount:
          type: integer
        totalEvents:
          type: integer
          format: int64
        totalEventSize:
          type: integer
          format: int64
      additionalProperties: false
    project-descriptor-schemas:
      type: object
      properties:
        id:
          type: string
        full:
          "$ref": "#/components/schemas/schema-descriptor"
        imported:
          "$ref": "#/components/schemas/schema-imported"
        all:
          "$ref": "#/components/schemas/schema-imported"
      additionalProperties: false
      required:
      - full
      - imported
    schema-descriptor:
      type: object
      properties:
        databases:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/database"
        metadata:
          "$ref": "#/components/schemas/schema_descriptor_metadata"
      additionalProperties: false
      required:
      - databases
      - metadata
    error-response-issue:
      type: object
      properties:
        type:
          description: An error category identifying what kind of issue occurred (SNAKE_CASE).
          type: string
          example: RELMIG_MAPPING_TABLE_MISSING
        message:
          description: A human-readable explanation of what went wrong.
          type: string
        pointer:
          description: JSON Pointer (RFC 6901) to the offending node.
          type: string
          example: "/project/content/mappings/0123456789abcdef0123456789abcdef/fields/Name/target/name"
      additionalProperties: false
      required:
      - message
      - type
    analysis-report-preflight-checks:
      type: object
      properties:
        name:
          type: string
        migrationMode:
          "$ref": "#/components/schemas/migration-mode"
        passed:
          type: boolean
      additionalProperties: false
      required:
      - migrationMode
      - name
      - passed
    analysis-report-rules:
      type: object
      properties:
        id:
          type: string
        dboType:
          "$ref": "#/components/schemas/rule_dbo_type"
        ruleType:
          "$ref": "#/components/schemas/rule_type"
        entityName:
          type: string
        detectionText:
          type: string
        difficulty:
          "$ref": "#/components/schemas/rule_difficulty"
        mitigationText:
          type: string
        category:
          "$ref": "#/components/schemas/rule_category"
        incompatibleFeatureType:
          "$ref": "#/components/schemas/incompatible-feature-type"
      additionalProperties: false
      required:
      - category
      - dboType
      - detectionText
      - difficulty
      - entityName
      - id
      - mitigationText
      - ruleType
    analysis-report-db-metrics:
      type: object
      properties:
        totalDbSize:
          type: integer
          format: int64
        readHeavyTables:
          type: array
          items:
            "$ref": "#/components/schemas/database-object-path"
        writeHeavyTables:
          type: array
          items:
            "$ref": "#/components/schemas/database-object-path"
        allTables:
          type: array
          items:
            "$ref": "#/components/schemas/table-analysis-description"
        allStoredProcedures:
          type: array
          items:
            "$ref": "#/components/schemas/stored-procedure-analysis-description"
        allTriggers:
          type: array
          items:
            "$ref": "#/components/schemas/trigger-analysis-description"
        allViews:
          type: array
          items:
            "$ref": "#/components/schemas/view-analysis-description"
      additionalProperties: false
      required:
      - allStoredProcedures
      - allTables
      - allTriggers
      - allViews
      - readHeavyTables
      - totalDbSize
      - writeHeavyTables
    analysis-report-database-metadata:
      type: object
      properties:
        databaseVersion:
          type: string
        connectionId:
          type: string
        connectionName:
          type: string
        connectionUrl:
          type: string
        databaseType:
          type: string
        connectionType:
          "$ref": "#/components/schemas/connection-type"
      required:
      - connectionId
      - databaseType
    analysis-report-confidence-takeaway:
      type: object
      properties:
        type:
          "$ref": "#/components/schemas/rule_category"
        value:
          type: number
      additionalProperties: false
      required:
      - type
      - value
    analysis-report-rule-type-count-by-severity:
      type: object
      properties:
        task:
          type: integer
        risk:
          type: integer
        notice:
          type: integer
        none:
          type: integer
      additionalProperties: false
      required:
      - none
      - notice
      - risk
      - task
    detection-category-counts:
      type: object
      properties:
        severityCountsByDetectionCategory:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/analysis-report-rule-type-count-by-severity"
      additionalProperties: false
      required:
      - countsByDetectionCategory
    connection-type:
      type: string
      enum:
      - DEMO
      - QA
      - STAGING
      - DEVELOPMENT
      - PRODUCTION
      - NONE
    database-type:
      description: Database type or a custom database type. For example, `MYSQL`,
        `ORACLE`, `POSTGRESQL`, `SQL_SERVER`, `COCKROACHDB`, `DB2`, `SQLANYWHERE`,
        `SYBASE`, `SYBASEIQ`, or `YUGABYTE`.
      type: string
      example: ORACLE
    migration-job-descriptor-options:
      type: object
      properties:
        dropCollections:
          type: boolean
          default: false
        mode:
          "$ref": "#/components/schemas/migration-mode"
        truncationReportMode:
          default: WARN
          allOf:
          - "$ref": "#/components/schemas/error-handling-mode"
        errorHandling:
          description: defines whether Debezium errors will throw an exception or
            just be logged. https://debezium.io/documentation/reference/stable/connectors/mysql.html#mysql-property-event-processing-failure-handling-mode
          default: FAIL
          allOf:
          - "$ref": "#/components/schemas/error-handling-mode"
        errorTolerance:
          description: |
            The number of failures (on the record level) that should be tolerated before terminating the migration.
            The value is strictly greater than or equal to.
          type: integer
          minimum: 0
        incrementalSnapshotOptions:
          "$ref": "#/components/schemas/incremental-snapshot-options"
      additionalProperties: false
      required:
      - mode
    migration-verification:
      type: object
      properties:
        enabled:
          type: boolean
          default: false
        type:
          description: 'COUNT_ONLY runs a standalone count comparison only (no field
            compare) and requires enabled: false and options.mode: VERIFICATION.'
          default: FULL
          allOf:
          - "$ref": "#/components/schemas/verification-type-enum"
        countMethod:
          description: COUNT_ONLY only. How both the source and target are counted.
            ESTIMATE uses database metadata estimates on both sides; EXACT counts
            both sides exactly.
          default: EXACT
          allOf:
          - "$ref": "#/components/schemas/count-method-enum"
        includedCollections:
          type: array
          items:
            type: string
        samplePercentage:
          type: integer
          default: 100
          maximum: 100
          minimum: 1
      additionalProperties: false
      required:
      - enabled
    relational-table-filters:
      description: An object where each key represents a schema name. Each schema
        contains tables you can apply table filters on.
      type: object
      example:
        schema_1_name:
          table_1_name:
            whereClause: id > 1000 AND id <= 2000
          table_2_name:
            whereClause: 'TRUE'
            rowCount: 10
      additionalProperties:
        additionalProperties:
          "$ref": "#/components/schemas/table-filter"
        description: An object where each key represents a table name within a schema.
        type: object
    collection-filters:
      description: "Include or exclude collections for this migration.\n- include
        only: Only collections matching the specified include filter will be migrated.\n-
        exclude only: All collections will be migrated, except those matching the
        exclude filter.\n- include and exclude: Migrate collections that match the
        include filter, excluding those that also match the exclude filter. \n- No
        filters: All collections will be migrated.\n"
      type: object
      properties:
        include:
          type: array
          items:
            type: string
        exclude:
          type: array
          items:
            type: string
    migration-job-statistics:
      allOf:
      - "$ref": "#/components/schemas/migration-job-statistics-details"
      - "$ref": "#/components/schemas/migration-job-statistics-preview"
    cdc-job-statistics:
      type: object
      properties:
        startedAt:
          type: string
          format: date-time
        lastEventTime:
          type: string
          format: date-time
        lastEventSourceDatabaseTime:
          type: string
          format: date-time
        eventsInLastHour:
          type: integer
          format: int64
          default: 0
        eventsInLastMinute:
          type: integer
          format: int64
          default: 0
        totalEventsSeen:
          type: integer
          format: int64
          default: 0
        latestBatchMaxSourceDbLagMs:
          description: |
            For each completed batch of writes to MongoDB, the maximum time delay from when a change was made in
            the source database (as reported by the database) until the batch write was completed.
            This may be affected by clock skew between the source database clock and the machine where the migration is running.
          type: integer
          format: int64
          default: -1
      additionalProperties: false
    jmx-connectivity:
      description: |
        Connectivity of the JMX statistics scrape (kafka-connect deployment profile only). Indicates
        whether the migrator is successfully scraping statistics over JMX and when it last did so, so a
        misconfigured/unreachable JMX endpoint or a crashed connect task is visible in the UI. Absent for
        deployments that do not read statistics over JMX.
      type: object
      properties:
        status:
          type: string
          enum:
          - AVAILABLE
          - UNAVAILABLE
        lastSuccessfulScrapeAt:
          description: Time of the most recent successful JMX statistics scrape.
          type: string
          format: date-time
        errorMessage:
          description: The most recent JMX connection error, when statistics are unavailable.
          type: string
      additionalProperties: false
      required:
      - status
    connector-status:
      description: |
        Runtime status of the Kafka Connect connectors backing this migration job (kafka-connect /
        confluent deployment profiles only), reflecting the actual state reported by Kafka Connect rather
        than assuming success at submission time. Lets the UI show which specific connector/task has an
        issue instead of a job that looks healthy while a connector is FAILED. Absent for deployments not
        backed by Kafka Connect.
      type: object
      properties:
        source:
          "$ref": "#/components/schemas/connector-role-status"
        sink:
          "$ref": "#/components/schemas/connector-role-status"
      additionalProperties: false
    failureError:
      type: object
      properties:
        errorType:
          type: string
        message:
          type: string
        failureAt:
          type: string
          format: date-time
        setupError:
          type: boolean
          default: false
        failedLocation:
          description: Location of the last error before the job failed. See the job
            logs for the full error breakdown.
          type: string
          nullable: true
        failedLocationType:
          description: TABLE = source table, COLLECTION = destination collection.
          type: string
          enum:
          - TABLE
          - COLLECTION
          nullable: true
      additionalProperties: false
      required:
      - errorType
      - failureAt
      - message
      - setupError
    verification-status-enum:
      type: string
      enum:
      - VERIFYING
      - FAILED
      - CANCELLING
      - CANCELLED
      - VERIFIED
      - ABORTED
    verification-type-enum:
      type: string
      enum:
      - FULL
      - COUNT_ONLY
    count-method-enum:
      type: string
      enum:
      - EXACT
      - ESTIMATE
    ddl-connection-details:
      type: object
      properties:
        type:
          "$ref": "#/components/schemas/database-type"
      additionalProperties: false
      required:
      - type
    migration-settings:
      type: object
      properties:
        viewMode:
          type: string
          enum:
          - HORIZONTAL
          - VERTICAL
          - RELATIONAL
          - MONGODB
        shouldRecommendSchema:
          type: boolean
        casing:
          type: string
          enum:
          - CAMEL_CASE
          - TITLE_CASE
          - KEBAB_CASE
          - SNAKE_CASE
          - UPPER_SNAKE_CASE
        excludedJsonExportCollections:
          type: array
          items:
            type: string
        keyHandling:
          "$ref": "#/components/schemas/migration-settings-key-handling-enum"
      additionalProperties: false
      required:
      - keyHandling
    migration-collections:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/collection"
    migration-mappings:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/mapping"
    migration-relationships:
      type: object
      properties:
        tables:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/mapping-object"
        collections:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/mapping-object"
        mappings:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/mapping-relationship"
      additionalProperties: false
      required:
      - collections
      - mappings
      - tables
    project-diagrams:
      type: object
      properties:
        activeTab:
          type: string
        tabs:
          type: array
          items:
            "$ref": "#/components/schemas/project-diagram"
      additionalProperties: false
      required:
      - activeTab
      - tabs
    project-tables:
      type: object
      additionalProperties:
        "$ref": "#/components/schemas/project-table"
    migration-settings-key-handling-enum:
      type: string
      enum:
      - WRAPPED
      - SINGLE
      - GENERATED
    migration-field-type:
      type: string
      enum:
      - AUTO
      - STRING
      - INTEGER
      - BOOL
      - DOUBLE
      - LONG
      - DECIMAL
      - ARRAY
      - DATE
      - TIMESTAMP
      - OBJECT
      - OBJECT_ID
      - BIN_DATA
      - MIN_KEY
      - MAX_KEY
      - JAVASCRIPT
      - REGEX
      - 'NULL'
    migration-field-conversion-strategy:
      type: string
      default: DEFAULT
      enum:
      - DEFAULT
      - LONG_MS
      - LONG_US
      - LONG_NS
      - DATE_UTC
      - DATE_STRIP
      - DATE_STRING_SEPARATE
    relational-path:
      type: object
      properties:
        database:
          type: string
        schema:
          type: string
        table:
          type: string
      additionalProperties: false
      required:
      - database
      - schema
      - table
    schema-imported:
      type: object
      additionalProperties:
        additionalProperties:
          additionalProperties:
            type: object
          type: object
        type: object
    database:
      type: object
      properties:
        schemas:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/schema"
      additionalProperties: false
      required:
      - schemas
    migration-mode:
      type: string
      enum:
      - SNAPSHOT
      - CDC
      - INCREMENTAL
      - VERIFICATION
    rule_dbo_type:
      type: string
      enum:
      - TABLE
      - VIEW
      - ROUTINE
      - INDEX
      - TRIGGER
      - DATABASE
      - COLUMN
    rule_type:
      type: string
      enum:
      - TASK
      - RISK
      - NOTICE
    rule_difficulty:
      type: string
      enum:
      - HIGH
      - MEDIUM
      - LOW
    rule_category:
      type: string
      enum:
      - DATA_TYPE
      - UNSUPPORTED_FEATURE
      - PERFORMANCE
      - SCHEMA
    incompatible-feature-type:
      type: string
      enum:
      - ORACLE-PACKAGE
      - ROUTINE
      - TRIGGERS
      - MATERIALIZED-VIEWS
    database-object-path:
      type: object
      properties:
        database:
          type: string
        schema:
          type: string
        name:
          type: string
      additionalProperties: false
      required:
      - database
      - name
      - schema
    table-analysis-description:
      type: object
      properties:
        path:
          "$ref": "#/components/schemas/database-object-path"
        dataSize:
          type: integer
          format: int64
        rowCount:
          type: integer
          format: int64
        readCount:
          type: integer
          format: int64
        writeCount:
          type: integer
          format: int64
        readWriteClassification:
          "$ref": "#/components/schemas/read-write-classification"
        columns:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/column"
        foreignKeys:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/foreign-key-descriptor"
      additionalProperties: false
      required:
      - columns
      - dataSize
      - path
      - readCount
      - readWriteClassification
      - rowCount
      - writeCount
    stored-procedure-analysis-description:
      type: object
      properties:
        path:
          "$ref": "#/components/schemas/database-object-path"
        definition:
          type: string
      additionalProperties: false
      required:
      - definition
      - path
    trigger-analysis-description:
      type: object
      properties:
        path:
          "$ref": "#/components/schemas/database-object-path"
        definition:
          type: string
      additionalProperties: false
      required:
      - definition
      - path
    view-analysis-description:
      type: object
      properties:
        path:
          "$ref": "#/components/schemas/database-object-path"
        definition:
          type: string
      additionalProperties: false
      required:
      - definition
      - path
    error-handling-mode:
      type: string
      enum:
      - FAIL
      - WARN
      - SKIP
    incremental-snapshot-options:
      description: Options for INCREMENTAL migration mode only.
      type: object
      properties:
        signalingTable:
          description: |
            Signaling table on the source database used to coordinate the incremental snapshot.
            Accepts schema.table (MySQL: database.table) with the database segment taken from the
            source connection, or a full database.schema.table name.
          type: string
          example: database.schema.table
        chunkSize:
          description: |
            Rows per incremental-snapshot chunk (Debezium incremental.snapshot.chunk.size).
            When omitted, Debezium's default of 1024 applies.
            Larger chunks copy faster but hold more rows in memory per open chunk window.
          type: integer
          maximum: 100000
          minimum: 1
      additionalProperties: false
    table-filter:
      type: object
      properties:
        whereClause:
          description: Contents of the SQL WHERE clause to filter rows for the specified
            source table.
          type: string
        rowCount:
          description: Optional limit to the number of rows returned from the source
            table.
          type: integer
          format: int64
          minimum: 1
      additionalProperties: false
    migration-job-statistics-details:
      type: object
      properties:
        startedAt:
          type: string
          format: date-time
        elapsedSeconds:
          type: integer
          format: int64
        remainingTableCount:
          type: integer
        processingTables:
          type: array
          items:
            type: string
        migratedTables:
          description: Source tables whose snapshot copy has completed. Completion
            means the source snapshot finished reading, not that every row migrated
            successfully; on failure a table listed here may also appear in failureError.
          type: array
          items:
            type: string
        totalEventsSeen:
          type: integer
          format: int64
          default: 0
        snapshotCompleted:
          type: boolean
          default: false
      additionalProperties: false
    connector-role-status:
      description: Runtime status of one Kafka Connect connector (source or sink)
        and its tasks.
      type: object
      properties:
        name:
          description: Connector name as registered in Kafka Connect.
          type: string
        state:
          "$ref": "#/components/schemas/connector-state-enum"
        tasks:
          description: Per-task runtime status for this connector.
          type: array
          items:
            "$ref": "#/components/schemas/connector-task-status"
      additionalProperties: false
      required:
      - state
    collection:
      type: object
      properties:
        name:
          description: Target collection name. Rejects whitespace-only values, a leading
            or trailing dot, the dollar sign, a "system." prefix, and any ".system."
            substring. Interior dots are permitted.
          type: string
          pattern: "^(?!\\s*$)(?!\\.)(?!.*\\.$)(?!.*\\$)(?!system\\.)(?!.*\\.system\\.).*$"
      additionalProperties: false
      required:
      - name
    mapping:
      type: object
      properties:
        settings:
          "$ref": "#/components/schemas/mapping-settings"
        fields:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/field-mapping"
        calculatedFields:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/calculated-field-mapping"
        collectionId:
          type: string
        table:
          type: string
      additionalProperties: false
      required:
      - calculatedFields
      - collectionId
      - fields
      - settings
      - table
    mapping-object:
      type: object
      properties:
        mappings:
          "$ref": "#/components/schemas/mapping-array"
      additionalProperties: false
      required:
      - mappings
    mapping-relationship:
      type: object
      properties:
        children:
          "$ref": "#/components/schemas/mapping-array"
      additionalProperties: false
      required:
      - children
    project-diagram:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        notes:
          type: string
        relational:
          "$ref": "#/components/schemas/project-diagram-view"
        collection:
          "$ref": "#/components/schemas/project-diagram-view"
      additionalProperties: false
      required:
      - collection
      - id
      - name
      - relational
    project-table:
      type: object
      properties:
        path:
          "$ref": "#/components/schemas/relational-path"
      additionalProperties: false
      required:
      - path
    schema:
      type: object
      properties:
        tables:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/table"
        views:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/schema-object"
        routines:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/schema-object"
        triggers:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/schema-object"
        packages:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/schema-object"
      additionalProperties: false
      required:
      - tables
    read-write-classification:
      type: string
      enum:
      - READ_HEAVY
      - WRITE_HEAVY
      - READ_AND_WRITE_HEAVY
      - NONE
    column:
      type: object
      properties:
        type:
          "$ref": "#/components/schemas/column-type"
        ordinalPosition:
          type: integer
          minimum: 1
        primaryKey:
          "$ref": "#/components/schemas/primary-key"
        nullable:
          type: boolean
        autoIncremented:
          type: boolean
        generated:
          type: boolean
        hidden:
          type: boolean
        indexed:
          type: boolean
        uniqueIndexed:
          type: boolean
      additionalProperties: false
      required:
      - autoIncremented
      - generated
      - hidden
      - indexed
      - nullable
      - ordinalPosition
      - type
      - uniqueIndexed
    foreign-key-descriptor:
      description: Describes a foreign key relationship defined on a child table,
        pointing to a parent table.
      type: object
      properties:
        targetTable:
          "$ref": "#/components/schemas/relational-path"
        cardinality:
          type: string
          enum:
          - UNKNOWN
          - ZERO_TO_ONE
          - ONE_TO_ONE
          - ZERO_TO_MANY
        synthetic:
          type: boolean
        columnMappings:
          description: The column-level mappings within this foreign key. Each entry
            maps a source column on the child table to a target column on the parent
            table. Multiple entries form a composite foreign key.
          type: array
          items:
            "$ref": "#/components/schemas/foreign-key-column-reference"
          minItems: 1
      additionalProperties: false
      required:
      - columnMappings
      - targetTable
    connector-state-enum:
      description: Runtime state reported by Kafka Connect for a connector or one
        of its tasks (see https://kafka.apache.org/documentation/#connect_administration).
        UNKNOWN is Relational Migrator's own value for a status that could not be
        retrieved, e.g. when the Kafka Connect worker is unreachable.
      type: string
      enum:
      - RUNNING
      - PAUSED
      - FAILED
      - UNASSIGNED
      - RESTARTING
      - STOPPED
      - UNKNOWN
    connector-task-status:
      description: Runtime status of a single Kafka Connect task, as reported by Kafka
        Connect.
      type: object
      properties:
        id:
          description: Task id within the connector.
          type: integer
        state:
          "$ref": "#/components/schemas/connector-state-enum"
        workerId:
          description: Kafka Connect worker the task is assigned to, when known.
          type: string
        trace:
          description: Failure stack trace, present when the task state is FAILED.
          type: string
      additionalProperties: false
      required:
      - id
      - state
    mapping-settings:
      type: object
      properties:
        type:
          "$ref": "#/components/schemas/mapping-type"
        notes:
          type: string
        embeddedPath:
          description: A single path segment for the embedded mapping. Rejects dots
            and whitespace-only values.
          type: string
          pattern: "^(?!\\s+$)[^.]*$"
        primitive:
          type: boolean
        arrayConditions:
          "$ref": "#/components/schemas/mapping-array-conditions"
        foreignKeyName:
          type: string
        ruleFilter:
          type: string
      additionalProperties: false
      required:
      - type
    field-mapping:
      type: object
      properties:
        target:
          "$ref": "#/components/schemas/target-field-mapping"
        source:
          "$ref": "#/components/schemas/source-field-mapping"
      additionalProperties: false
      required:
      - source
      - target
    calculated-field-mapping:
      type: object
      properties:
        name:
          description: Calculated field name. Rejects whitespace-only values, a leading
            or trailing dot, and consecutive dots. Interior dots are permitted (they
            express dot-notation paths).
          type: string
          pattern: "^(?!\\s*$)(?!\\.)(?!.*\\.$)(?!.*\\.\\.).*$"
        isNullExcluded:
          type: boolean
          default: false
        type:
          "$ref": "#/components/schemas/migration-field-type"
        conversionStrategy:
          "$ref": "#/components/schemas/migration-field-conversion-strategy"
        expression:
          type: string
      additionalProperties: false
      required:
      - expression
      - name
    mapping-array:
      type: array
      items:
        "$ref": "#/components/schemas/id"
    project-diagram-view:
      type: object
      properties:
        nodes:
          type: array
          items:
            "$ref": "#/components/schemas/project-diagrams-node"
        edges:
          type: array
          items:
            "$ref": "#/components/schemas/project-diagrams-edge"
      additionalProperties: false
      required:
      - edges
      - nodes
    table:
      type: object
      properties:
        type:
          type: string
          enum:
          - TABLE
          - VIEW
        size:
          type: integer
          format: int64
        columns:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/column"
        uniqueIndexes:
          type: object
          additionalProperties:
            items:
              type: string
            type: array
        nonUniqueIndexes:
          type: object
          additionalProperties:
            items:
              type: string
            type: array
        filter:
          "$ref": "#/components/schemas/table-filter"
        foreignKeys:
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/foreign-key-descriptor"
      additionalProperties: false
      required:
      - columns
      - type
    schema-object:
      type: object
      properties:
        included:
          type: boolean
        name:
          type: string
        definition:
          type: string
      additionalProperties: false
      required:
      - definition
      - included
      - name
    column-type:
      type: object
      properties:
        defaultMongoFieldType:
          "$ref": "#/components/schemas/migration-field-type"
        databaseSpecificType:
          type: string
        precision:
          type: integer
        scale:
          type: integer
      additionalProperties: false
      required:
      - databaseSpecificType
    primary-key:
      type: object
      properties:
        name:
          type: string
      additionalProperties: false
      required:
      - name
    foreign-key-column-reference:
      description: A single column reference within a foreign key, from the child
        table to the parent table.
      type: object
      properties:
        source:
          description: The source column name on the child table.
          type: string
        target:
          description: The referenced column name on the parent (target) table.
          type: string
      additionalProperties: false
      required:
      - source
      - target
    mapping-type:
      type: string
      enum:
      - NEW_DOCUMENT
      - EMBEDDED_DOCUMENT
      - EMBEDDED_DOCUMENT_ARRAY
    mapping-array-conditions:
      type: object
      properties:
        sortBy:
          type: string
        order:
          "$ref": "#/components/schemas/sorting-order-type"
        limit:
          type: integer
          format: int32
          minimum: 1
      additionalProperties: false
      required:
      - order
      - sortBy
    target-field-mapping:
      type: object
      properties:
        name:
          description: Target field name. Rejects whitespace-only values, a leading
            or trailing dot, and consecutive dots. Interior dots are permitted (they
            express dot-notation paths).
          type: string
          pattern: "^(?!\\s*$)(?!\\.)(?!.*\\.$)(?!.*\\.\\.).*$"
        included:
          type: boolean
        isNullExcluded:
          type: boolean
          default: false
        type:
          "$ref": "#/components/schemas/migration-field-type"
        conversionStrategy:
          "$ref": "#/components/schemas/migration-field-conversion-strategy"
      additionalProperties: false
      required:
      - included
      - name
      - type
    source-field-mapping:
      type: object
      properties:
        name:
          type: string
        databaseSpecificType:
          type: string
        isPrimaryKey:
          type: boolean
          default: false
      additionalProperties: false
      required:
      - databaseSpecificType
      - name
    project-diagrams-node:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        position:
          "$ref": "#/components/schemas/project_diagrams_node_position"
        width:
          type: number
        height:
          type: number
        hidden:
          type: boolean
      additionalProperties: false
      required:
      - hidden
      - id
      - position
      - type
    project-diagrams-edge:
      type: object
      properties:
        id:
          type: string
        source:
          type: string
        target:
          type: string
        markerStart:
          type: string
          enum:
          - START_ONE
          - START_ONE_OR_MANY
        markerEnd:
          type: string
          enum:
          - END_ONE
          - END_MANY
          - END_ONE_OR_MANY
      additionalProperties: false
      required:
      - id
      - source
      - target
    sorting-order-type:
      type: string
      enum:
      - ASC
      - DESC
    migration_job_status_metadata_verification:
      type: object
      properties:
        samplePercentage:
          type: integer
          default: 100
        isEmbeddedMode:
          type: boolean
          default: false
        status:
          "$ref": "#/components/schemas/verification-status-enum"
    migration_job_status_metadata:
      type: object
      properties:
        telemetryUserId:
          type: string
        verification:
          "$ref": "#/components/schemas/migration_job_status_metadata_verification"
      additionalProperties: false
    ProjectDescriptorBase_connectionDetails:
      type: object
      properties:
        ddl:
          "$ref": "#/components/schemas/ddl-connection-details"
      additionalProperties: false
    schema_descriptor_metadata:
      type: object
      properties:
        databaseType:
          "$ref": "#/components/schemas/database-type"
        databaseVersion:
          type: string
      additionalProperties: false
      required:
      - databaseType
    project_diagrams_node_position:
      type: object
      properties:
        x:
          type: number
        "y":
          type: number
      additionalProperties: false
      required:
      - x
      - "y"
tags:
- description: Generates an analysis report for an application before migration
  name: Analysis
- description: Data migration
  name: Job
- description: Captures relational schemas and mappings
  name: Project
