MATIH Platform is in active MVP development. Documentation reflects current implementation status.
10a. Data Ingestion
Connector Catalog & Dynamic Forms

Connector Catalog & Dynamic Forms

Matih provides a seamless connector experience powered by Airbyte's 600+ connectors. Instead of raw JSON configuration, the platform renders dynamic forms driven by each connector's JSON Schema specification.

How It Works

User selects connector → Platform fetches JSON Schema spec from Airbyte
  → Frontend renders typed form with groups, validation, and conditional fields
    → User fills form → Platform validates against spec → Source created

Connector Catalog API

Browse All Connectors

GET /api/v1/connectors/catalog

Returns 600+ connectors with metadata:

[
  {
    "sourceDefinitionId": "decd338e-5647-4c0b-adf4-da0e75f5a750",
    "name": "Postgres",
    "dockerRepository": "airbyte/source-postgres",
    "dockerImageTag": "3.7.2",
    "documentationUrl": "https://docs.airbyte.com/integrations/sources/postgres",
    "icon": "postgresql.svg",
    "releaseStage": "generally_available",
    "supportLevel": "certified",
    "matihCapabilities": {
      "supportsCDC": true,
      "supportsIncremental": true,
      "hasMCPServer": true,
      "availableModes": ["ingest", "live"]
    }
  }
]

Get Connector Spec (Dynamic Form Schema)

GET /api/v1/connectors/postgres/spec

Returns the JSON Schema that drives form rendering:

{
  "type": "object",
  "required": ["host", "port", "database", "username"],
  "properties": {
    "host": {
      "type": "string",
      "title": "Host",
      "description": "Hostname of the database.",
      "order": 0,
      "group": "db"
    },
    "port": {
      "type": "integer",
      "title": "Port",
      "default": 5432,
      "minimum": 0,
      "maximum": 65536,
      "order": 1,
      "group": "db"
    },
    "password": {
      "type": "string",
      "title": "Password",
      "airbyte_secret": true,
      "order": 5,
      "group": "auth"
    },
    "replication_method": {
      "type": "object",
      "title": "Update Method",
      "display_type": "radio",
      "oneOf": [
        {
          "title": "CDC (Write-Ahead Log)",
          "properties": {
            "method": {"const": "CDC"},
            "replication_slot": {"type": "string"},
            "publication": {"type": "string"}
          }
        },
        {
          "title": "Xmin System Column",
          "properties": {
            "method": {"const": "Xmin"}
          }
        }
      ]
    }
  },
  "groups": [
    {"id": "db"},
    {"id": "auth"},
    {"id": "security", "title": "Security"},
    {"id": "advanced", "title": "Advanced"}
  ]
}

Validate Configuration Before Creating

POST /api/v1/connectors/postgres/validate
{
  "host": "db.example.com",
  "port": "not-a-number",
  "database": "mydb"
}

Response:

{
  "connectorType": "postgres",
  "valid": false,
  "errors": [
    "Port must be an integer (got: not-a-number)",
    "Missing required field: Username"
  ]
}

JSON Schema Extensions

Airbyte extends standard JSON Schema with custom properties that control UI rendering:

ExtensionPurposeExample
orderField display order"order": 0 (first field)
groupGroups fields into UI cards"group": "auth"
airbyte_secretMasks field value (password)"airbyte_secret": true
always_showShow optional field by default"always_show": true
display_typeRadio vs dropdown for oneOf"display_type": "radio"
multilineMulti-line text input"multiline": true
airbyte_hiddenHide from UI, keep in API"airbyte_hidden": true
pattern_descriptorHuman-readable format hint"pattern_descriptor": "YYYY-MM-DD"

Supported Connector Categories

CategoryExamplesCount
DatabasesPostgreSQL, MySQL, MongoDB, Oracle, SQL Server50+
Cloud Data WarehousesSnowflake, BigQuery, Redshift, Databricks10+
SaaS ApplicationsSalesforce, HubSpot, Jira, Zendesk, Stripe200+
Cloud StorageS3, GCS, Azure Blob, SFTP15+
APIsREST API, GraphQL, custom HTTP100+
StreamingKafka, Kinesis, Pub/Sub10+
FilesCSV, JSON, Parquet, Excel, Avro10+

RBAC

OperationPermission
Browse catalogsources:read
View connector specsources:read
Validate configsources:read
Refresh cacheingestion:admin