REST API reference

This page details the TDK REST API endpoints available.

openapi: 3.0.1
info:
  title: "Testing suite common API"
  description: |
    Test
  version: "0.1"

x-package: io.synthesized.api

paths: {}

components:
  schemas:
    TableConfig:
      description: "[TableConfig] is equivalent to [UserTableConfig] but with all parameters must set,
       it doesn't accept null values."
      type: object
      nullable: false
      x-extends:
        - java.io.Serializable
      properties:
        table:
          $ref: "#/components/schemas/Table"
        mode:
          $ref: "userconfig.yaml#/components/schemas/TransformationMode"
        transformations:
          type: array
          items:
            $ref: "userconfig.yaml#/components/schemas/ColumnTransformationParams"
          nullable: false
        target_ratio:
          type: number
          format: double
          nullable: true
        target_row_number:
          type: integer
          format: int64
          nullable: true
        cycle_breaker_references:
          type: array
          nullable: false
          items:
            type: string
            nullable: false
          default: [ ]
        target_count:
          type: integer
          format: int64
          nullable: false
          default: 0
        insert_batch_size:
          type: integer
          nullable: false
        use_working_directory:
          type: boolean
          nullable: false
        filter:
          type: string
        in_memory_filter_threshold:
          type: integer
          nullable: false

    DataType:
      type: object
      title: DataTypeDTO
      nullable: false
      x-extends:
        - java.io.Serializable
      properties:
        type_name:
          type: string
          nullable: false
        sql_type_name:
          type: string
          default: 'null'
        length:
          type: integer
          default: 'null'
        precision:
          type: integer
          default: 'null'
        scale:
          type: integer
          default: 'null'
        nullable:
          type: boolean
          default: true
          nullable: false
        is_user_defined:
          type: boolean
          nullable: false
          default: false
        has_explicit_size:
          description: "If the value is false, a datatype doesn't have explicit scale, precision or length in a
            SQL definition"
          type: boolean
          nullable: false
          default: true

    Field:
      type: object
      title: Field
      x-extends:
        - java.io.Serializable
      properties:
        name:
          type: string
          nullable: false
        database_id:
          type: string
          nullable: false
        database_name:
          type: string
          nullable: true
          default: null
        schema:
          type: string
        table:
          type: string
          nullable: false
        data_type:
          $ref: "#/components/schemas/DataType"
        external_meta:
          $ref: "#/components/schemas/ExternalFieldMeta"

    ForeignKey:
      type: object
      title: ForeignKey
      x-extends:
        - java.io.Serializable
      properties:
        database_id:
          type: string
          nullable: false
        database_name:
          type: string
          nullable: true
          default: null
        schema:
          type: string
        table:
          type: string
          nullable: false
        name:
          type: string
          nullable: false
        fields:
          type: array
          items:
            type: string
          nullable: false
        referred_name:
          type: string
          nullable: true
        referred_database_id:
          type: string
          nullable: false
        referred_database_name:
          type: string
          nullable: true
          default: null
        referred_schema:
          type: string
        referred_table:
          type: string
        referred_fields:
          type: array
          items:
            type: string
          nullable: false
        meta_source:
          $ref: "#/components/schemas/MetaSource"
        delete_referential_action:
          $ref: "#/components/schemas/ReferentialAction"
        update_referential_action:
          $ref: "#/components/schemas/ReferentialAction"

    PrimaryKey:
      type: object
      title: PrimaryKey
      x-extends:
        - java.io.Serializable
      properties:
        database_id:
          type: string
          nullable: false
        database_name:
          type: string
          nullable: true
          default: null
        schema:
          type: string
        table:
          type: string
          nullable: false
        name:
          type: string
          nullable: false
        fields:
          type: array
          items:
            type: string
          nullable: false

    UniqueKey:
      type: object
      title: UniqueKey
      x-extends:
        - java.io.Serializable
      properties:
        database_id:
          type: string
          nullable: false
        database_name:
          type: string
          nullable: true
          default: null
        schema:
          type: string
        table:
          type: string
          nullable: false
        name:
          type: string
          nullable: false
        fields:
          type: array
          items:
            type: string
          nullable: false

    Procedure:
      type: object
      title: Procedure
      nullable: false
      x-extends:
        - java.io.Serializable
      properties:
        name:
          type: string
          nullable: false
        schema:
          type: string

    Function:
      type: object
      title: Procedure
      nullable: false
      x-extends:
        - java.io.Serializable
      properties:
        name:
          type: string
          nullable: false
        schema:
          type: string
    UserType:
      type: object
      title: User type
      nullable: false
      x-extends:
        - java.io.Serializable
      properties:
        name:
          type: string
          nullable: false
        schema:
          type: string

    Table:
      type: object
      title: Table
      nullable: false
      x-extends:
        - java.io.Serializable
      properties:
        name:
          type: string
          nullable: false
        fields:
          type: array
          items:
            $ref: '#/components/schemas/Field'
          nullable: false
        database_id:
          type: string
          nullable: false
        database_name:
          type: string
          nullable: true
          default: null
        schema:
          type: string
        indexes:
          type: array
          items:
            type:
              string
          nullable: false
          default: []
        primary_key:
          $ref: "#/components/schemas/PrimaryKey"
        foreign_keys:
          type: array
          items:
            $ref: '#/components/schemas/ForeignKey'
          nullable: false
          default: []
        unique_keys:
          type: array
          items:
            $ref: '#/components/schemas/UniqueKey'
          nullable: false
          default: []
        identity_column:
          description: >
            The name of IDENTITY column, if this table has one, null otherwise.
          type: string
          nullable: true
          default: null
        external_meta:
          $ref: "#/components/schemas/ExternalTableMeta"

    SQLDialect:
      enum:
        - POSTGRES
        - MYSQL
        - MARIADB
        - SQLITE
        - ORACLE
        - MSSQL
        - H2
        - DB2
        - SNOWFLAKE

    ReferentialAction:
      enum:
        - NO_ACTION
        - CASCADE
        - SET_NULL
        - SET_DEFAULT

    Database:
      type: object
      title: Database
      properties:
        id:
          description: "Database Id"
          type: string
          nullable: false
        name:
          description: "Database name (if exists)"
          type: string
          nullable: true
          default: null
        dialect:
          $ref: "#/components/schemas/SQLDialect"
        schemas:
          type: array
          nullable: false
          items:
            type: string
        tables:
          description: "Tables in the database"
          type: array
          nullable: false
          items:
            $ref: "#/components/schemas/Table"
          default: []
        triggers:
          type: array
          nullable: false
          items:
            type: string
          default: []
        views:
          type: array
          nullable: false
          items:
            type: string
          default: []
        procedures:
          description: "Procedures in the database"
          type: array
          nullable: false
          items:
            $ref: "#/components/schemas/Procedure"
          default: [ ]
        functions:
          description: "Functions in the database"
          type: array
          nullable: false
          items:
            $ref: "#/components/schemas/Function"
          default: [ ]
        user_types:
          description: "User types in the database"
          type: array
          nullable: false
          items:
            $ref: "#/components/schemas/UserType"
          default: [ ]
        users:
          type: array
          nullable: false
          items:
            type: string
          default: []

    DatabaseConnection:
      type: object
      title: DatabaseConnection
      nullable: false
      properties:
        jdbc_url:
          type: string
          nullable: false
        user:
          $ref: 'inventory.yaml#/components/schemas/Credentials'
        password:
          $ref: 'inventory.yaml#/components/schemas/Credentials'
        sql_dialect:
          $ref: '#/components/schemas/SQLDialect'
        spawned_id:
          description: Spawned database UUID (if this database is temporary)
          type: string

    ExternalFieldMeta:
      nullable: true
      default: null
      type: object
      properties:
        classifiers:
          type: array
          nullable: false
          items:
            type: string
          default: []

    ExternalTableMeta:
      nullable: true
      default: null
      type: object
      properties:
        sensitivity_tags:
          type: array
          nullable: false
          items:
            $ref: "#/components/schemas/SensitivityTag"
          default: []

    SensitivityTag:
      nullable: true
      type: object
      properties:
        group:
          type: string
          nullable: false
        level:
          type: string
          nullable: false

    MetaSource:
      nullable: false
      enum:
        - DATABASE
        - CONFIG

    ValidationResult:
      type: object
      title: ValidationResultDTO
      nullable: false
      properties:
        failed:
          type: boolean
          nullable: false
        messages:
          type: array
          nullable: false
          items:
            type: string
          default: [ ]