{"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.\nThe value is strictly greater than or equal to.\n","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\nthe source database (as reported by the database) until the batch write was completed.\nThis may be affected by clock skew between the source database clock and the machine where the migration is running.\n","type":"integer","format":"int64","default":-1}},"additionalProperties":false},"jmx-connectivity":{"description":"Connectivity of the JMX statistics scrape (kafka-connect deployment profile only). Indicates\nwhether the migrator is successfully scraping statistics over JMX and when it last did so, so a\nmisconfigured/unreachable JMX endpoint or a crashed connect task is visible in the UI. Absent for\ndeployments that do not read statistics over JMX.\n","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 /\nconfluent deployment profiles only), reflecting the actual state reported by Kafka Connect rather\nthan assuming success at submission time. Lets the UI show which specific connector/task has an\nissue instead of a job that looks healthy while a connector is FAILED. Absent for deployments not\nbacked by Kafka Connect.\n","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.\nAccepts schema.table (MySQL: database.table) with the database segment taken from the\nsource connection, or a full database.schema.table name.\n","type":"string","example":"database.schema.table"},"chunkSize":{"description":"Rows per incremental-snapshot chunk (Debezium incremental.snapshot.chunk.size).\nWhen omitted, Debezium's default of 1024 applies.\nLarger chunks copy faster but hold more rows in memory per open chunk window.\n","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"}]}
