{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/confluent/main/json-schema/confluent-tableflow-v1-catalog-integration-update-request-schema.json",
  "title": "tableflow.v1.CatalogIntegrationUpdateRequest",
  "description": "The desired state of the Catalog Integration",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/confluent-catalog-integrations-tableflow-v1-api-openapi.yml#/components/schemas/tableflow.v1.CatalogIntegrationUpdateRequest",
  "type": "object",
  "properties": {
    "api_version": {
      "type": "string",
      "enum": [
        "tableflow/v1"
      ],
      "description": "APIVersion defines the schema version of this representation of a resource.",
      "readOnly": true
    },
    "kind": {
      "type": "string",
      "description": "Kind defines the object this REST resource represents.",
      "readOnly": true,
      "enum": [
        "CatalogIntegrationUpdateRequest"
      ]
    },
    "id": {
      "description": "ID is the \"natural identifier\" for an object within its scope/namespace; it is normally unique across time but not space. That is, you can assume that the ID will not be reclaimed and reused after an object is deleted (\"time\"); however, it may collide with IDs for other object `kinds` or objects of the same `kind` within a different scope/namespace (\"space\").",
      "type": "string",
      "maxLength": 255,
      "readOnly": true
    },
    "metadata": {
      "allOf": [
        {
          "$ref": "#/$defs/ObjectMeta"
        },
        {
          "properties": {
            "self": {},
            "resource_name": {}
          }
        }
      ]
    },
    "spec": {
      "allOf": [
        {
          "$ref": "#/$defs/tableflow.v1.CatalogIntegrationUpdateSpec"
        }
      ]
    }
  },
  "$defs": {
    "EnvScopedObjectReference": {
      "type": "object",
      "description": "ObjectReference provides information for you to locate the referred object",
      "required": [
        "id",
        "related",
        "resource_name"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "ID of the referred resource",
          "minLength": 1,
          "maxLength": 255
        },
        "environment": {
          "type": "string",
          "description": "Environment of the referred resource, if env-scoped",
          "minLength": 1,
          "maxLength": 255
        },
        "related": {
          "type": "string",
          "format": "uri",
          "description": "API URL for accessing or modifying the referred object",
          "minLength": 1,
          "readOnly": true
        },
        "resource_name": {
          "type": "string",
          "format": "uri",
          "description": "CRN reference to the referred resource",
          "minLength": 1,
          "readOnly": true
        }
      }
    },
    "GlobalObjectReference": {
      "type": "object",
      "description": "ObjectReference provides information for you to locate the referred object",
      "required": [
        "id",
        "related",
        "resource_name"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "ID of the referred resource",
          "minLength": 1,
          "maxLength": 255
        },
        "related": {
          "type": "string",
          "format": "uri",
          "description": "API URL for accessing or modifying the referred object",
          "minLength": 1,
          "readOnly": true
        },
        "resource_name": {
          "type": "string",
          "format": "uri",
          "description": "CRN reference to the referred resource",
          "minLength": 1,
          "readOnly": true
        }
      }
    },
    "ObjectMeta": {
      "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
      "required": [
        "self"
      ],
      "properties": {
        "self": {
          "description": "Self is a Uniform Resource Locator (URL) at which an object can be addressed. This URL encodes the service location, API version, and other particulars necessary to locate the resource at a point in time",
          "type": "string",
          "format": "uri",
          "readOnly": true
        },
        "resource_name": {
          "description": "Resource Name is a Uniform Resource Identifier (URI) that is globally unique across space and time. It is represented as a Confluent Resource Name",
          "type": "string",
          "format": "uri",
          "readOnly": true
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "readOnly": true,
          "description": "The date and time at which this object was created. It is represented in RFC3339 format and is in UTC."
        },
        "updated_at": {
          "type": "string",
          "format": "date-time",
          "readOnly": true,
          "description": "The date and time at which this object was last updated. It is represented in RFC3339 format and is in UTC."
        },
        "deleted_at": {
          "type": "string",
          "format": "date-time",
          "readOnly": true,
          "description": "The date and time at which this object was (or will be) deleted. It is represented in RFC3339 format and is in UTC."
        }
      },
      "readOnly": true
    },
    "tableflow.v1.CatalogIntegrationAwsGlueUpdateSpec": {
      "type": "object",
      "description": "The catalog integration Glue connection config for update operations.",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "AwsGlue"
          ],
          "description": "The type of the catalog integration.",
          "x-immutable": true
        },
        "custom_database": {
          "type": "string",
          "description": "The custom database name to use in AWS Glue."
        }
      }
    },
    "tableflow.v1.CatalogIntegrationSnowflakeUpdateSpec": {
      "type": "object",
      "description": "The catalog integration connection config for Snowflake Open Catalog (update operations).",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "Snowflake"
          ],
          "description": "The type of the catalog integration."
        },
        "endpoint": {
          "description": "The catalog integration connection endpoint for Snowflake Open Catalog.",
          "type": "string"
        },
        "client_id": {
          "description": "The client ID of the catalog integration.",
          "type": "string"
        },
        "client_secret": {
          "description": "The client secret of the catalog integration.",
          "type": "string"
        },
        "warehouse": {
          "description": "Warehouse name of the Snowflake Open Catalog.",
          "type": "string"
        },
        "allowed_scope": {
          "description": "Allowed scope of the Snowflake Open Catalog.",
          "type": "string"
        },
        "custom_namespace": {
          "type": "string",
          "description": "The custom namespace to use in Snowflake Open Catalog."
        }
      }
    },
    "tableflow.v1.CatalogIntegrationUnityUpdateSpec": {
      "type": "object",
      "description": "The catalog integration connection config for Unity Catalog.",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "Unity"
          ],
          "description": "The type of the catalog integration."
        },
        "workspace_endpoint": {
          "type": "string",
          "description": "The Databricks workspace URL associated with the Unity Catalog."
        },
        "catalog_name": {
          "type": "string",
          "description": "The name of the catalog within Unity Catalog."
        },
        "client_id": {
          "type": "string",
          "description": "The OAuth client ID used to authenticate with the Unity Catalog."
        },
        "client_secret": {
          "type": "string",
          "description": "The OAuth client secret used for authentication with the Unity Catalog."
        },
        "custom_schema": {
          "type": "string",
          "description": "The custom schema name to use in Unity Catalog."
        }
      }
    },
    "tableflow.v1.CatalogIntegrationUpdateSpec": {
      "type": "object",
      "description": "The desired state of the Catalog Integration",
      "required": [
        "environment",
        "kafka_cluster"
      ],
      "properties": {
        "display_name": {
          "type": "string",
          "description": "The name of the catalog integration"
        },
        "suspended": {
          "type": "boolean",
          "description": "Indicates whether the Catalog Integration should be suspended."
        },
        "config": {
          "type": "object",
          "description": "The integration config",
          "oneOf": [
            {
              "$ref": "#/$defs/tableflow.v1.CatalogIntegrationAwsGlueUpdateSpec"
            },
            {
              "$ref": "#/$defs/tableflow.v1.CatalogIntegrationSnowflakeUpdateSpec"
            },
            {
              "$ref": "#/$defs/tableflow.v1.CatalogIntegrationUnityUpdateSpec"
            }
          ]
        },
        "environment": {
          "description": "The environment to which the target Kafka cluster belongs.",
          "allOf": [
            {
              "$ref": "#/$defs/GlobalObjectReference"
            }
          ]
        },
        "kafka_cluster": {
          "description": "The kafka cluster of the topic for which Tableflow is enabled",
          "allOf": [
            {
              "$ref": "#/$defs/EnvScopedObjectReference"
            }
          ]
        }
      }
    }
  }
}