{
  "install_config": {
    "type": "object",
    "required": [
      "host",
      "port",
      "database",
      "user"
    ],
    "properties": {
      "host": {
        "type": "string"
      },
      "port": {
        "type": "integer",
        "default": 5432
      },
      "database": {
        "type": "string"
      },
      "user": {
        "type": "string"
      },
      "password": {
        "type": "string",
        "secret": true
      },
      "ssl": {
        "type": "boolean",
        "default": true
      }
    }
  },
  "source_stream": {
    "type": "object",
    "required": [
      "schema",
      "table"
    ],
    "properties": {
      "schema": {
        "type": "string",
        "default": "public"
      },
      "table": {
        "type": "string"
      }
    }
  },
  "source_query": {
    "type": "object",
    "required": [
      "query"
    ],
    "properties": {
      "query": {
        "type": "string",
        "multiline": true
      }
    }
  },
  "write": {
    "type": "object",
    "required": [
      "schema",
      "table",
      "writeMode"
    ],
    "properties": {
      "schema": {
        "type": "string",
        "default": "public"
      },
      "table": {
        "type": "string"
      },
      "writeMode": {
        "type": "string",
        "enum": [
          "append",
          "upsert",
          "overwrite"
        ],
        "default": "append"
      },
      "primaryKeys": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    }
  },
  "ontology_fact_store": {
    "type": "object",
    "required": [
      "type",
      "schema",
      "tablePrefix"
    ],
    "properties": {
      "type": {
        "type": "string",
        "enum": [
          "postgres_ontology_fact_store"
        ],
        "default": "postgres_ontology_fact_store"
      },
      "schema": {
        "type": "string",
        "default": "ontology"
      },
      "tablePrefix": {
        "type": "string",
        "default": "main"
      }
    }
  }
}
