> ## Documentation Index
> Fetch the complete documentation index at: https://www.propeldata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Unions

> Union types in the Management API

<div />

## ApplicationOrFailureResponse

The result of a mutation which creates or modifies an Application.

If successful, an `ApplicationResponse` will be returned; otherwise, a
`FailureResponse` will be returned.

<ParamField path="ApplicationOrFailureResponse" type="ApplicationResponse | FailureResponse">
  <Expandable title="ApplicationResponse">
    The result of a mutation which creates or modifies an Application.

    <ParamField path="application" type="Application">
      The Application which was created or modified.

      <Expandable title="Application">
        The Application object.

        Propel Applications represent the web or mobile app you are building. They provide the API credentials that allow your client- or server-side app to access the Propel API. The Application's Propeller determines the speed and cost of your Metric Queries.

        <ParamField path="id" type="ID" required>
          The Application's unique identifier.
        </ParamField>

        <ParamField path="uniqueName" type="String" required>
          The Application's unique name.
        </ParamField>

        <ParamField path="description" type="String" required>
          The Application's description.
        </ParamField>

        <ParamField path="account" type="Account" required>
          The Application's Account.

          See <a href="/docs/management-api/types#account">Account</a>
        </ParamField>

        <ParamField path="environment" type="Environment" required>
          The Application's Environment.

          See <a href="/docs/management-api/types#environment">Environment</a>
        </ParamField>

        <ParamField path="createdAt" type="DateTime" required>
          The Application's creation date and time in UTC.
        </ParamField>

        <ParamField path="modifiedAt" type="DateTime" required>
          The Application's last modification date and time in UTC.
        </ParamField>

        <ParamField path="createdBy" type="String" required>
          The Application's creator. It can be either a User ID, an Application ID, or "system" if it was created by Propel.
        </ParamField>

        <ParamField path="modifiedBy" type="String" required>
          The Application's last modifier. It can be either a User ID, an Application ID, or "system" if it was modified by Propel.
        </ParamField>

        <ParamField path="clientId" type="String" required>
          The Application's OAuth 2.0 client identifier.
        </ParamField>

        <ParamField path="secret" type="String">
          The Application's OAuth 2.0 client secret.
        </ParamField>

        <ParamField path="propeller" type="Propeller" required>
          The Application's Propeller.

          See <a href="/docs/management-api/enums#propeller">Propeller</a>
        </ParamField>

        <ParamField path="scopes" type="[ApplicationScope!]" required>
          The Application's OAuth 2.0 scopes.

          See <a href="/docs/management-api/enums#applicationscope">ApplicationScope</a>
        </ParamField>

        <ParamField path="dataPoolAccessPolicies" type="DataPoolAccessPolicyConnection" required>
          A paginated list of Data Pool Access Policies associated with the Application.

          ### Arguments

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#datapoolaccesspolicyconnection">DataPoolAccessPolicyConnection</a>
        </ParamField>

        <Expandable title="Deprecated Fields">
          <ParamField path="policies" type="PolicyConnection" required deprecated>
            A paginated list of Policies associated with the Application.

            <span style={{ fontStyle: 'italic' }}>deprecated: Use Data Pool Access Policies instead</span>

            ### Arguments

            <ParamField notPatch path="first" type="Int" />

            <ParamField notPatch path="after" type="String" />

            <ParamField notPatch path="last" type="Int" />

            <ParamField notPatch path="before" type="String" />

            See <a href="/docs/management-api/types#policyconnection">PolicyConnection</a>
          </ParamField>
        </Expandable>
      </Expandable>
    </ParamField>
  </Expandable>

  <Expandable title="FailureResponse">
    The failure response object.

    <ParamField path="error" type="Error" required>
      The error that caused the failure.

      <Expandable title="Error">
        The error object.

        <ParamField path="code" type="Int">
          The error code.
        </ParamField>

        <ParamField path="message" type="String" required>
          The error message.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

## ConnectionSettings

<ParamField path="ConnectionSettings" type="SnowflakeConnectionSettings | InternalConnectionSettings | AmazonDataFirehoseConnectionSettings | AmazonDynamoDBConnectionSettings | ClickHouseConnectionSettings | HttpConnectionSettings | KafkaConnectionSettings | PostgreSqlConnectionSettings | S3ConnectionSettings | TwilioSegmentConnectionSettings | WebhookConnectionSettings">
  <Expandable title="SnowflakeConnectionSettings">
    The Snowflake Data Source connection settings.

    <ParamField path="account" type="String" required>
      The Snowflake account. This is the part before the "snowflakecomputing.com" part of your Snowflake URL.
    </ParamField>

    <ParamField path="database" type="String" required>
      The Snowflake database name.
    </ParamField>

    <ParamField path="warehouse" type="String" required>
      The Snowflake warehouse name. It should be "PROPELLING" if you used the default name in the setup script.
    </ParamField>

    <ParamField path="schema" type="String" required>
      The Snowflake schema.
    </ParamField>

    <ParamField path="username" type="String" required>
      The Snowflake username. It should be "PROPEL" if you used the default name in the setup script.
    </ParamField>

    <ParamField path="role" type="String" required>
      The Snowflake role. It should be "PROPELLER" if you used the default name in the setup script.
    </ParamField>
  </Expandable>

  <Expandable title="InternalConnectionSettings">
    <ParamField path="_" type="Boolean" />
  </Expandable>

  <Expandable title="AmazonDataFirehoseConnectionSettings">
    The Amazon Data Firehose Data Source's connection settings.

    <ParamField path="accessControlEnabled" type="Boolean">
      Enables or disables access control for the Data Pool.
      If the Data Pool has access control enabled, Applications must be assigned Data Pool Access Policies in order to query the Data Pool and its Metrics.
    </ParamField>

    <ParamField path="basicAuth" type="HttpBasicAuthSettings" required>
      HTTP basic access authentication credentials. You must configure these same credentials to be included in the
      `X-Amz-Firehose-Access-Key` header when Amazon Data Firehose issues requests to its custom HTTP endpoint.

      <Expandable title="HttpBasicAuthSettings">
        The HTTP Basic authentication settings.

        <ParamField path="username" type="String" required>
          Username for HTTP Basic authentication that must be included in the Authorization header when uploading new data.
        </ParamField>

        <ParamField path="password" type="String" required>
          Password for HTTP Basic authentication that must be included in the Authorization header when uploading new data.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="columns" type="[AmazonDataFirehoseDataSourceColumn!]">
      Additional columns for the table in Propel.

      <Expandable title="AmazonDataFirehoseDataSourceColumn">
        A column in an Amazon Data Firehose Data Source's table.

        <ParamField path="name" type="String" required>
          The column name.
        </ParamField>

        <ParamField path="jsonProperty" type="String" required>
          The JSON property that the column will be derived from. For example, if you send a JSON event like this:

          ```json theme={"system"}
          { "greeting": { "message": "hello, world" } }
          ```

          Then you can use the JSON property "greeting.message" to extract "hello, world" to a column.
        </ParamField>

        <ParamField path="type" type="ColumnType" required>
          The column type.

          See <a href="/docs/management-api/enums#columntype">ColumnType</a>
        </ParamField>

        <ParamField path="nullable" type="Boolean" required>
          Whether the column's type is nullable or not.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="httpEndpointURL" type="String" required>
      Copy this value into the URL field when configuring your Amazon Data Firehose to deliver to a custom HTTP endpoint.
    </ParamField>

    <ParamField path="tableSettings" type="TableSettings">
      Override the Data Pool's table settings. These describe how the Data Pool's table is created in ClickHouse, and a
      default will be chosen based on the Data Pool's `timestamp` value, if any. You can override these
      defaults in order to specify a custom table engine, custom ORDER BY, etc.

      <Expandable title="TableSettings">
        A Data Pool's table settings.

        These describe how the Data Pool's table is created in ClickHouse.

        <ParamField path="engine" type="TableEngine">
          The ClickHouse table engine for the Data Pool's table.

          See <a href="/docs/management-api/unions#tableengine">TableEngine</a>
        </ParamField>

        <ParamField path="partitionBy" type="[String!]">
          The PARTITION BY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="primaryKey" type="[String!]">
          The PRIMARY KEY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="orderBy" type="[String!]">
          The ORDER BY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="ttl" type="String">
          The TTL clause for the Data Pool's table.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="timestamp" type="String">
      The primary timestamp column, if any.
    </ParamField>

    <ParamField path="xAmzFirehoseAccessKey" type="String" required>
      Copy this value into the `X-Amz-Firehose-Access-Key` header when configuring your Amazon Data Firehose to deliver to a custom HTTP endpoint.
    </ParamField>
  </Expandable>

  <Expandable title="AmazonDynamoDBConnectionSettings">
    The Amazon DynamoDB Data Source's connection settings.

    <ParamField path="accessControlEnabled" type="Boolean">
      Enables or disables access control for the Data Pool.
      If the Data Pool has access control enabled, Applications must be assigned Data Pool Access Policies in order to query the Data Pool and its Metrics.
    </ParamField>

    <ParamField path="basicAuth" type="HttpBasicAuthSettings" required>
      HTTP basic access authentication credentials. You must configure these same credentials to be included in the
      `X-Amz-Firehose-Access-Key` header when Amazon Data Firehose transmits records from your DynamoDB table to its
      custom HTTP endpoint.

      <Expandable title="HttpBasicAuthSettings">
        The HTTP Basic authentication settings.

        <ParamField path="username" type="String" required>
          Username for HTTP Basic authentication that must be included in the Authorization header when uploading new data.
        </ParamField>

        <ParamField path="password" type="String" required>
          Password for HTTP Basic authentication that must be included in the Authorization header when uploading new data.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="columns" type="[AmazonDynamoDBDataSourceColumn!]">
      Additional columns for the table in Propel.

      <Expandable title="AmazonDynamoDBDataSourceColumn">
        A column in an Amazon DynamoDB Data Source's table.

        <ParamField path="name" type="String" required>
          The column name.
        </ParamField>

        <ParamField path="jsonProperty" type="String" required>
          The JSON property that the column will be derived from. For example, if you send a JSON event like this:

          ```json theme={"system"}
          { "greeting": { "message": "hello, world" } }
          ```

          Then you can use the JSON property "greeting.message" to extract "hello, world" to a column.
        </ParamField>

        <ParamField path="type" type="ColumnType" required>
          The column type.

          See <a href="/docs/management-api/enums#columntype">ColumnType</a>
        </ParamField>

        <ParamField path="nullable" type="Boolean" required>
          Whether the column's type is nullable or not.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="httpEndpointURL" type="String" required>
      Copy this value into the URL field when configuring your Amazon Data Firehose to transmit records from your
      DynamoDB table to a custom HTTP endpoint.
    </ParamField>

    <ParamField path="tableSettings" type="TableSettings">
      Override the Data Pool's table settings. These describe how the Data Pool's table is created in ClickHouse, and a
      default will be chosen based on the Data Pool's `timestamp` value, if any. You can override these
      defaults in order to specify a custom table engine, custom ORDER BY, etc.

      <Expandable title="TableSettings">
        A Data Pool's table settings.

        These describe how the Data Pool's table is created in ClickHouse.

        <ParamField path="engine" type="TableEngine">
          The ClickHouse table engine for the Data Pool's table.

          See <a href="/docs/management-api/unions#tableengine">TableEngine</a>
        </ParamField>

        <ParamField path="partitionBy" type="[String!]">
          The PARTITION BY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="primaryKey" type="[String!]">
          The PRIMARY KEY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="orderBy" type="[String!]">
          The ORDER BY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="ttl" type="String">
          The TTL clause for the Data Pool's table.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="timestamp" type="String">
      The primary timestamp column, if any.
    </ParamField>

    <ParamField path="xAmzFirehoseAccessKey" type="String" required>
      Copy this value into the `X-Amz-Firehose-Access-Key` header when configuring your Amazon Data Firehose to
      transmit records from your DynamoDB table to its custom HTTP endpoint.
    </ParamField>
  </Expandable>

  <Expandable title="ClickHouseConnectionSettings">
    The ClickHouse Data Source connection settings.

    <ParamField path="database" type="String" required>
      Which database to connect to
    </ParamField>

    <ParamField path="password" type="String" required>
      The password for the provided user
    </ParamField>

    <ParamField path="readonly" type="Boolean">
      Whether the user has readonly permissions or not for querying ClickHouse
    </ParamField>

    <ParamField path="url" type="String" required>
      The URL where the ClickHouse host is listening to HTTP\[S] connections
    </ParamField>

    <ParamField path="user" type="String" required>
      The user for authenticating against the ClickHouse host
    </ParamField>
  </Expandable>

  <Expandable title="HttpConnectionSettings">
    The HTTP Data Source connection settings.

    <ParamField path="basicAuth" type="HttpBasicAuthSettings">
      The HTTP Basic authentication settings for uploading new data.

      If this parameter is not provided, anyone with the URL to your tables will be able to upload data. While it's OK to test without HTTP Basic authentication, we recommend enabling it.

      <Expandable title="HttpBasicAuthSettings">
        The HTTP Basic authentication settings.

        <ParamField path="username" type="String" required>
          Username for HTTP Basic authentication that must be included in the Authorization header when uploading new data.
        </ParamField>

        <ParamField path="password" type="String" required>
          Password for HTTP Basic authentication that must be included in the Authorization header when uploading new data.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="tables" type="[HttpDataSourceTable!]" required>
      The HTTP Data Source's tables.

      <Expandable title="HttpDataSourceTable">
        An HTTP Data Source's table.

        <ParamField path="id" type="ID" required>
          The ID of the table
        </ParamField>

        <ParamField path="name" type="String" required>
          The name of the table
        </ParamField>

        <ParamField path="columns" type="[HttpDataSourceColumn!]" required>
          All the columns present in the table

          See <a href="/docs/management-api/types#httpdatasourcecolumn">HttpDataSourceColumn</a>
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>

  <Expandable title="KafkaConnectionSettings">
    The Kafka Data Source connection settings.

    <ParamField path="auth" type="String" required>
      The type of authentication to use. Can be SCRAM-SHA-256, SCRAM-SHA-512, PLAIN or NONE
    </ParamField>

    <ParamField path="bootstrapServers" type="[String!]" required>
      The bootstrap server(s) to connect to
    </ParamField>

    <ParamField path="password" type="String" required>
      The password for the provided user
    </ParamField>

    <ParamField path="tls" type="Boolean">
      Whether the the connection to the Kafka servers is encrypted or not
    </ParamField>

    <ParamField path="user" type="String" required>
      The user for authenticating against the Kafka servers
    </ParamField>
  </Expandable>

  <Expandable title="PostgreSqlConnectionSettings">
    The PostgreSQL Data Source connection settings.

    <ParamField path="database" type="String">
      Which database to connect to
    </ParamField>

    <ParamField path="host" type="String" required>
      The host where PostgreSQL is listening
    </ParamField>

    <ParamField path="port" type="Int">
      The port where PostgreSQL is listening (usually 5432)
    </ParamField>

    <ParamField path="schema" type="String">
      Which schema to use
    </ParamField>

    <ParamField path="user" type="String" required>
      The user for authenticating against PostgreSQL
    </ParamField>
  </Expandable>

  <Expandable title="S3ConnectionSettings">
    The connection settings for an Amazon S3 Data Source. These include the Amazon S3 bucket name, the AWS access key ID, and the tables (along with their paths). We do not allow fetching the AWS secret access key after it has been set.

    <ParamField path="awsAccessKeyId" type="String" required>
      The AWS access key ID for an IAM user with sufficient access to the Amazon S3 bucket.
    </ParamField>

    <ParamField path="bucket" type="String" required>
      The name of the Amazon S3 bucket.
    </ParamField>

    <ParamField path="tables" type="[S3DataSourceTable!]" required>
      The Amazon S3 Data Source's tables.

      <Expandable title="S3DataSourceTable">
        An Amazon S3 Data Source's table.

        <ParamField path="id" type="ID" required>
          The ID of the table
        </ParamField>

        <ParamField path="name" type="String" required>
          The name of the table
        </ParamField>

        <ParamField path="path" type="String">
          The path to the table's files in Amazon S3.
        </ParamField>

        <ParamField path="columns" type="[S3DataSourceColumn!]" required>
          All the columns present in the table

          See <a href="/docs/management-api/types#s3datasourcecolumn">S3DataSourceColumn</a>
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>

  <Expandable title="TwilioSegmentConnectionSettings">
    The Twilio Segment Data Source connection settings.

    <ParamField path="accessControlEnabled" type="Boolean">
      Enables or disables access control for the Data Pool.
      If the Data Pool has access control enabled, Applications must be assigned Data Pool Access Policies in order to query the Data Pool and its Metrics.
    </ParamField>

    <ParamField path="basicAuth" type="HttpBasicAuthSettings">
      The HTTP basic authentication settings for the Twilio Segment Data Source URL. If this parameter is not provided, anyone with the webhook URL will be able to send events. While it's OK to test without HTTP Basic authentication, we recommend enabling it.

      <Expandable title="HttpBasicAuthSettings">
        The HTTP Basic authentication settings.

        <ParamField path="username" type="String" required>
          Username for HTTP Basic authentication that must be included in the Authorization header when uploading new data.
        </ParamField>

        <ParamField path="password" type="String" required>
          Password for HTTP Basic authentication that must be included in the Authorization header when uploading new data.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="columns" type="[TwilioSegmentDataSourceColumn!]">
      The additional columns for the table in Propel.

      <Expandable title="TwilioSegmentDataSourceColumn">
        A column in a Twilio Segment Data Source's table.

        <ParamField path="name" type="String" required>
          The column name.
        </ParamField>

        <ParamField path="jsonProperty" type="String" required>
          The JSON property that the column will be derived from. For example, if you POST a JSON event like this:

          ```json theme={"system"}
          { "greeting": { "message": "hello, world" } }
          ```

          Then you can use the JSON property "greeting.message" to extract "hello, world" to a column.
        </ParamField>

        <ParamField path="type" type="ColumnType" required>
          The column type.

          See <a href="/docs/management-api/enums#columntype">ColumnType</a>
        </ParamField>

        <ParamField path="nullable" type="Boolean" required>
          Whether the column's type is nullable or not.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="tableSettings" type="TableSettings">
      Override the Data Pool's table settings. These describe how the Data Pool's table is created in ClickHouse, and a
      default will be chosen based on the Data Pool's `timestamp` and `uniqueId` values, if any. You can override these
      defaults in order to specify a custom table engine, custom ORDER BY, etc.

      <Expandable title="TableSettings">
        A Data Pool's table settings.

        These describe how the Data Pool's table is created in ClickHouse.

        <ParamField path="engine" type="TableEngine">
          The ClickHouse table engine for the Data Pool's table.

          See <a href="/docs/management-api/unions#tableengine">TableEngine</a>
        </ParamField>

        <ParamField path="partitionBy" type="[String!]">
          The PARTITION BY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="primaryKey" type="[String!]">
          The PRIMARY KEY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="orderBy" type="[String!]">
          The ORDER BY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="ttl" type="String">
          The TTL clause for the Data Pool's table.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="timestamp" type="String">
      The primary timestamp column, if any.
    </ParamField>

    <ParamField path="webhookUrl" type="String" required>
      The webhook URL that Twilio Segment should POST events to.
    </ParamField>
  </Expandable>

  <Expandable title="WebhookConnectionSettings">
    The Webhook Data Source connection settings.

    <ParamField path="accessControlEnabled" type="Boolean">
      Enables or disables access control for the Data Pool.
      If the Data Pool has access control enabled, Applications must be assigned Data Pool Access Policies in order to query the Data Pool and its Metrics.
    </ParamField>

    <ParamField path="basicAuth" type="HttpBasicAuthSettings">
      The HTTP basic authentication settings for the Webhook Data Source URL. If this parameter is not provided, anyone with the webhook URL will be able to send events. While it's OK to test without HTTP Basic authentication, we recommend enabling it.

      <Expandable title="HttpBasicAuthSettings">
        The HTTP Basic authentication settings.

        <ParamField path="username" type="String" required>
          Username for HTTP Basic authentication that must be included in the Authorization header when uploading new data.
        </ParamField>

        <ParamField path="password" type="String" required>
          Password for HTTP Basic authentication that must be included in the Authorization header when uploading new data.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="columns" type="[WebhookDataSourceColumn!]">
      The additional columns for the table in Propel.

      <Expandable title="WebhookDataSourceColumn">
        A column in a Webhook Data Source's table.

        <ParamField path="name" type="String" required>
          The column name.
        </ParamField>

        <ParamField path="jsonProperty" type="String" required>
          The JSON property that the column will be derived from. For example, if you POST a JSON event like this:

          ```json theme={"system"}
          { "greeting": { "message": "hello, world" } }
          ```

          Then you can use the JSON property "greeting.message" to extract "hello, world" to a column.
        </ParamField>

        <ParamField path="type" type="ColumnType" required>
          The column type.

          See <a href="/docs/management-api/enums#columntype">ColumnType</a>
        </ParamField>

        <ParamField path="nullable" type="Boolean" required>
          Whether the column's type is nullable or not.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="tableSettings" type="TableSettings">
      Override the Data Pool's table settings. These describe how the Data Pool's table is created in ClickHouse, and a
      default will be chosen based on the Data Pool's `timestamp` and `uniqueId` values, if any. You can override these
      defaults in order to specify a custom table engine, custom ORDER BY, etc.

      <Expandable title="TableSettings">
        A Data Pool's table settings.

        These describe how the Data Pool's table is created in ClickHouse.

        <ParamField path="engine" type="TableEngine">
          The ClickHouse table engine for the Data Pool's table.

          See <a href="/docs/management-api/unions#tableengine">TableEngine</a>
        </ParamField>

        <ParamField path="partitionBy" type="[String!]">
          The PARTITION BY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="primaryKey" type="[String!]">
          The PRIMARY KEY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="orderBy" type="[String!]">
          The ORDER BY clause for the Data Pool's table.
        </ParamField>

        <ParamField path="ttl" type="String">
          The TTL clause for the Data Pool's table.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="timestamp" type="String">
      The primary timestamp column, if any.
    </ParamField>

    <ParamField path="webhookUrl" type="String" required>
      The Webhook URL for posting JSON events
    </ParamField>

    <Expandable title="Deprecated Fields">
      <ParamField path="tenant" type="String" deprecated>
        The tenant ID column, if any.

        <span style={{ fontStyle: 'italic' }}>deprecated: Will be removed; use Data Pool Access Policies instead.</span>
      </ParamField>

      <ParamField path="uniqueId" type="String" deprecated>
        The unique ID column, if any. Propel uses the primary timestamp and a unique ID to compose a primary key for determining whether records should be inserted, deleted, or updated.

        <span style={{ fontStyle: 'italic' }}>deprecated: Will be removed; use Table Settings to define the primary key.</span>
      </ParamField>
    </Expandable>
  </Expandable>
</ParamField>

## DataSourceOrFailureResponse

The result of a mutation which creates or modifies a DataSource.

If successful, an `DataSourceResponse` will be returned; otherwise, a
`FailureResponse` will be returned.

<ParamField path="DataSourceOrFailureResponse" type="DataSourceResponse | FailureResponse">
  <Expandable title="DataSourceResponse">
    The result of a mutation which creates or modifies a Data Source.

    <ParamField path="dataSource" type="DataSource">
      The Data Source which was created or modified.

      <Expandable title="DataSource">
        The Data Source object.

        A Data Source is a connection to your data warehouse. It has the necessary connection details for Propel to access Snowflake or any other supported Data Source.

        <ParamField path="id" type="ID" required>
          The Data Source's unique identifier.
        </ParamField>

        <ParamField path="uniqueName" type="String" required>
          The Data Source's unique name.
        </ParamField>

        <ParamField path="description" type="String" required>
          The Data Source's description.
        </ParamField>

        <ParamField path="account" type="Account" required>
          The Data Source's Account.

          See <a href="/docs/management-api/types#account">Account</a>
        </ParamField>

        <ParamField path="environment" type="Environment" required>
          The Data Source's Environment.

          See <a href="/docs/management-api/types#environment">Environment</a>
        </ParamField>

        <ParamField path="createdAt" type="DateTime" required>
          The Data Source's creation date and time in UTC.
        </ParamField>

        <ParamField path="modifiedAt" type="DateTime" required>
          The Data Source's last modification date and time in UTC.
        </ParamField>

        <ParamField path="createdBy" type="String" required>
          The Data Source's creator. It can be either a User ID, an Application ID, or "system" if it was created by Propel.
        </ParamField>

        <ParamField path="modifiedBy" type="String" required>
          The Data Source's last modifier. It can be either a User ID, an Application ID, or "system" if it was modified by Propel.
        </ParamField>

        <ParamField path="type" type="DataSourceType" required>
          The Data Source's type.

          See <a href="/docs/management-api/enums#datasourcetype">DataSourceType</a>
        </ParamField>

        <ParamField path="status" type="DataSourceStatus" required>
          The Data Source's status.

          See <a href="/docs/management-api/enums#datasourcestatus">DataSourceStatus</a>
        </ParamField>

        <ParamField path="connectionSettings" type="ConnectionSettings" required>
          The Data Source's connection settings.

          See <a href="/docs/management-api/unions#connectionsettings">ConnectionSettings</a>
        </ParamField>

        <ParamField path="tables" type="TableConnection">
          The tables contained within the Data Source, according to the most recent table introspection.

          ### Arguments

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#tableconnection">TableConnection</a>
        </ParamField>

        <ParamField path="tableIntrospections" type="TableIntrospectionConnection">
          A list of table introspections performed for the Data Source. You can see how tables and columns changed over time by paging through this list.

          ### Arguments

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#tableintrospectionconnection">TableIntrospectionConnection</a>
        </ParamField>

        <ParamField path="checks" type="[DataSourceCheck!]">
          A list of checks performed on the Data Source during its most recent connection attempt.

          See <a href="/docs/management-api/types#datasourcecheck">DataSourceCheck</a>
        </ParamField>

        <ParamField path="dataPools" type="DataPoolConnection">
          If you list Data Pools via the `dataPools` field on a Data Source, you will get Data Pools for the Data Source.

          The `dataPools` field uses cursor-based pagination typical of GraphQL APIs. You can use the pairs of parameters `first` and `after` or `last` and `before` to page forward or backward through the results, respectively.

          For forward pagination, the `first` parameter defines the number of results to return, and the `after` parameter defines the cursor to continue from. You should pass the cursor for the *last* result of the current page to `after`.

          For backward pagination, the `last` parameter defines the number of results to return, and the `before` parameter defines the cursor to continue from. You should pass the cursor for the *first* result of the current page to `before`.

          ### Arguments

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#datapoolconnection">DataPoolConnection</a>
        </ParamField>

        <Expandable title="Deprecated Fields">
          <ParamField path="error" type="Error" deprecated>
            <span style={{ fontStyle: 'italic' }}>deprecated: Refer to `checks` instead</span>

            See <a href="/docs/management-api/types#error">Error</a>
          </ParamField>
        </Expandable>
      </Expandable>
    </ParamField>
  </Expandable>

  <Expandable title="FailureResponse">
    The failure response object.

    <ParamField path="error" type="Error" required>
      The error that caused the failure.

      <Expandable title="Error">
        The error object.

        <ParamField path="code" type="Int">
          The error code.
        </ParamField>

        <ParamField path="message" type="String" required>
          The error message.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

## TableEngine

A Data Pool's table engine.

<ParamField path="TableEngine" type="MergeTreeTableEngine | ReplacingMergeTreeTableEngine | SummingMergeTreeTableEngine | AggregatingMergeTreeTableEngine | PostgreSqlTableEngine">
  <Expandable title="MergeTreeTableEngine">
    Parameters for the MergeTree table engine.

    <ParamField path="type" type="TableEngineType" required>
      The type is always `MERGE_TREE`.

      <Expandable title="TableEngineType">
        ClickHouse table engine types.

        <ParamField path=" ">
          * `MERGE_TREE`: The MergeTree table engine.
          * `REPLACING_MERGE_TREE`: The ReplacingMergeTree table engine.
          * `SUMMING_MERGE_TREE`: The SummingMergeTree table engine.
          * `AGGREGATING_MERGE_TREE`: The AggregatingMergeTree table engine.
          * `POSTGRESQL`: The PostgreSQL table engine.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>

  <Expandable title="ReplacingMergeTreeTableEngine">
    Parameters for the ReplacingMergeTree table engine.

    <ParamField path="type" type="TableEngineType" required>
      The type is always `REPLACING_MERGE_TREE`.

      <Expandable title="TableEngineType">
        ClickHouse table engine types.

        <ParamField path=" ">
          * `MERGE_TREE`: The MergeTree table engine.
          * `REPLACING_MERGE_TREE`: The ReplacingMergeTree table engine.
          * `SUMMING_MERGE_TREE`: The SummingMergeTree table engine.
          * `AGGREGATING_MERGE_TREE`: The AggregatingMergeTree table engine.
          * `POSTGRESQL`: The PostgreSQL table engine.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="ver" type="String">
      The `ver` parameter to the ReplacingMergeTree engine.
    </ParamField>
  </Expandable>

  <Expandable title="SummingMergeTreeTableEngine">
    Parameters for the SummingMergeTree table engine.

    <ParamField path="type" type="TableEngineType" required>
      The type is always `SUMMING_MERGE_TREE`.

      <Expandable title="TableEngineType">
        ClickHouse table engine types.

        <ParamField path=" ">
          * `MERGE_TREE`: The MergeTree table engine.
          * `REPLACING_MERGE_TREE`: The ReplacingMergeTree table engine.
          * `SUMMING_MERGE_TREE`: The SummingMergeTree table engine.
          * `AGGREGATING_MERGE_TREE`: The AggregatingMergeTree table engine.
          * `POSTGRESQL`: The PostgreSQL table engine.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField path="columns" type="[String!]">
      The columns argument for the SummingMergeTree table engine
    </ParamField>
  </Expandable>

  <Expandable title="AggregatingMergeTreeTableEngine">
    Parameters for the AggregatingMergeTree table engine.

    <ParamField path="type" type="TableEngineType" required>
      The type is always `AGGREGATING_MERGE_TREE`.

      <Expandable title="TableEngineType">
        ClickHouse table engine types.

        <ParamField path=" ">
          * `MERGE_TREE`: The MergeTree table engine.
          * `REPLACING_MERGE_TREE`: The ReplacingMergeTree table engine.
          * `SUMMING_MERGE_TREE`: The SummingMergeTree table engine.
          * `AGGREGATING_MERGE_TREE`: The AggregatingMergeTree table engine.
          * `POSTGRESQL`: The PostgreSQL table engine.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>

  <Expandable title="PostgreSqlTableEngine">
    Parameters for the PostgreSQL table engine.

    <ParamField path="type" type="TableEngineType" required>
      The type is always `POSTGRESQL`.

      <Expandable title="TableEngineType">
        ClickHouse table engine types.

        <ParamField path=" ">
          * `MERGE_TREE`: The MergeTree table engine.
          * `REPLACING_MERGE_TREE`: The ReplacingMergeTree table engine.
          * `SUMMING_MERGE_TREE`: The SummingMergeTree table engine.
          * `AGGREGATING_MERGE_TREE`: The AggregatingMergeTree table engine.
          * `POSTGRESQL`: The PostgreSQL table engine.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

## DataPoolOrFailureResponse

The result of a mutation which creates or modifies a Data Pool.

If successful, an `DataPoolResponse` will be returned; otherwise, a
`FailureResponse` will be returned.

<ParamField path="DataPoolOrFailureResponse" type="DataPoolResponse | FailureResponse">
  <Expandable title="DataPoolResponse">
    The result of a mutation which creates or modifies a Data Pool.

    <ParamField path="dataPool" type="DataPool">
      The Data Pool which was created or modified.

      <Expandable title="DataPool">
        The Data Pool object. Data Pools are Propel's high-speed data store and cache

        <ParamField path="id" type="ID" required>
          The Data Pool's unique identifier.
        </ParamField>

        <ParamField path="uniqueName" type="String" required>
          The Data Pool's unique name.
        </ParamField>

        <ParamField path="description" type="String" required>
          The Data Pool's description.
        </ParamField>

        <ParamField path="account" type="Account" required>
          The Data Pool's Account.

          See <a href="/docs/management-api/types#account">Account</a>
        </ParamField>

        <ParamField path="environment" type="Environment" required>
          The Data Pool's Environment.

          See <a href="/docs/management-api/types#environment">Environment</a>
        </ParamField>

        <ParamField path="createdAt" type="DateTime" required>
          The Data Pool's creation date and time in UTC.
        </ParamField>

        <ParamField path="modifiedAt" type="DateTime" required>
          The Data Pool's last modification date and time in UTC.
        </ParamField>

        <ParamField path="createdBy" type="String" required>
          The Data Pool's creator. It can be either a User ID, an Application ID, or "system" if it was created by Propel.
        </ParamField>

        <ParamField path="modifiedBy" type="String" required>
          The Data Pool's last modifier. It can be either a User ID, an Application ID, or "system" if it was modified by Propel.
        </ParamField>

        <ParamField path="dataSource" type="DataSource" required>
          The Data Pool's Data Source.
          See <a href="/docs/management-api/types#datasource">DataSource</a>
        </ParamField>

        <ParamField path="status" type="DataPoolStatus" required>
          The Data Pool's status.

          See <a href="/docs/management-api/enums#datapoolstatus">DataPoolStatus</a>
        </ParamField>

        <ParamField path="dataRetentionInDays" type="Int" required>
          The Data Pool's data retention in days (not yet supported).
        </ParamField>

        <ParamField path="table" type="String" required>
          The name of the Data Pool's table.
        </ParamField>

        <ParamField path="timestamp" type="Timestamp">
          The Data Pool's primary timestamp column, if any.

          See <a href="/docs/management-api/types#timestamp">Timestamp</a>
        </ParamField>

        <ParamField path="recordCount" type="String">
          The number of records in the Data Pool.
        </ParamField>

        <ParamField path="sizeInTerabytes" type="Float">
          The amount of storage in terabytes used by the Data Pool.
        </ParamField>

        <ParamField path="columns" type="DataPoolColumnConnection">
          The Data Pool's columns.

          ### Arguments

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#datapoolcolumnconnection">DataPoolColumnConnection</a>
        </ParamField>

        <ParamField path="availableMeasures" type="DataPoolColumnConnection">
          The list of measures (numeric columns) in the Data Pool.

          ### Arguments

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#datapoolcolumnconnection">DataPoolColumnConnection</a>
        </ParamField>

        <ParamField path="setupTasks" type="[DataPoolSetupTask!]">
          A list of setup tasks performed on the Data Pool during its most recent setup attempt.

          See <a href="/docs/management-api/types#datapoolsetuptask">DataPoolSetupTask</a>
        </ParamField>

        <ParamField path="syncing" type="DataPoolSyncing" required>
          Settings related to Data Pool syncing.

          See <a href="/docs/management-api/types#datapoolsyncing">DataPoolSyncing</a>
        </ParamField>

        <ParamField path="syncs" type="SyncConnection">
          The list of Syncs of the Data Pool.

          ### Arguments

          <ParamField notPatch path="filter" type="SyncsFilter">
            See <a href="/docs/management-api/enums#syncsfilter">SyncsFilter</a>
          </ParamField>

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#syncconnection">SyncConnection</a>
        </ParamField>

        <ParamField path="metrics" type="MetricConnection">
          The list of Metrics powered by the Data Pool.

          ### Arguments

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#metricconnection">MetricConnection</a>
        </ParamField>

        <ParamField path="deletionJobs" type="DeletionJobConnection">
          The Deletion Jobs that were historically issued to this Data Pool, sorted by creation time, in descending order.

          ### Arguments

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#deletionjobconnection">DeletionJobConnection</a>
        </ParamField>

        <ParamField path="addColumnToDataPoolJobs" type="AddColumnToDataPoolJobConnection">
          The Add Column Jobs that were historically issued to this Data Pool, sorted by creation time, in descending order.

          ### Arguments

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#addcolumntodatapooljobconnection">AddColumnToDataPoolJobConnection</a>
        </ParamField>

        <ParamField path="updateDataPoolRecordsJobs" type="UpdateDataPoolRecordsJobConnection">
          The UpdateDataPoolRecords Jobs that were historically issued to this Data Pool, sorted by creation time, in descending order.

          ### Arguments

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#updatedatapoolrecordsjobconnection">UpdateDataPoolRecordsJobConnection</a>
        </ParamField>

        <ParamField path="accessControlEnabled" type="Boolean" required>
          Whether the Data Pool has access control enabled or not.

          If the Data Pool has access control enabled, Applications must be assigned Data Pool Access
          Policies in order to query the Data Pool and its Metrics.
        </ParamField>

        <ParamField path="dataPoolAccessPolicies" type="DataPoolAccessPolicyConnection" required>
          A paginated list of Data Pool Access Policies available on the Data Pool.

          ### Arguments

          <ParamField notPatch path="first" type="Int" />

          <ParamField notPatch path="after" type="String" />

          <ParamField notPatch path="last" type="Int" />

          <ParamField notPatch path="before" type="String" />

          See <a href="/docs/management-api/types#datapoolaccesspolicyconnection">DataPoolAccessPolicyConnection</a>
        </ParamField>

        <ParamField path="validateExpression" type="ValidateExpressionResult" required>
          Validates a custom expression against the Data Pool's available columns. If the provided expression is invalid, the ValidateExpressionResult response will contain a reason explaining why.

          ### Arguments

          <ParamField notPatch path="expression" type="String" required />

          See <a href="/docs/management-api/types#validateexpressionresult">ValidateExpressionResult</a>
        </ParamField>

        <ParamField path="tableSettings" type="TableSettings" required>
          The Data Pool's table settings.

          See <a href="/docs/management-api/types#tablesettings">TableSettings</a>
        </ParamField>

        <ParamField path="partitionByColumns" type="[DataPoolColumn!]">
          The Data Pool's columns that participate in its PARTITION BY clause.

          See <a href="/docs/management-api/types#datapoolcolumn">DataPoolColumn</a>
        </ParamField>

        <ParamField path="primaryKeyColumns" type="[DataPoolColumn!]">
          The Data Pool's columns that participate in its PRIMARY KEY clause.

          See <a href="/docs/management-api/types#datapoolcolumn">DataPoolColumn</a>
        </ParamField>

        <ParamField path="orderByColumns" type="[DataPoolColumn!]">
          The Data Pool's columns that participate in its ORDER BY clause.

          See <a href="/docs/management-api/types#datapoolcolumn">DataPoolColumn</a>
        </ParamField>

        <Expandable title="Deprecated Fields">
          <ParamField path="error" type="Error" deprecated>
            <span style={{ fontStyle: 'italic' }}>deprecated: Refer to `setupTasks` instead</span>

            See <a href="/docs/management-api/types#error">Error</a>
          </ParamField>

          <ParamField path="tenant" type="Tenant" deprecated>
            The Data Pool's tenant ID, if configured.

            <span style={{ fontStyle: 'italic' }}>deprecated: Will be removed; use Data Pool Access Policies instead</span>

            See <a href="/docs/management-api/types#tenant">Tenant</a>
          </ParamField>

          <ParamField path="uniqueId" type="UniqueId" deprecated>
            The Data Pool's unique ID column. Propel uses the primary timestamp and a unique ID to compose a primary key for determining whether records should be inserted, deleted, or updated within the Data Pool.

            <span style={{ fontStyle: 'italic' }}>deprecated: Will be removed; use table settings to define the primary key.</span>

            See <a href="/docs/management-api/types#uniqueid">UniqueId</a>
          </ParamField>
        </Expandable>
      </Expandable>
    </ParamField>
  </Expandable>

  <Expandable title="FailureResponse">
    The failure response object.

    <ParamField path="error" type="Error" required>
      The error that caused the failure.

      <Expandable title="Error">
        The error object.

        <ParamField path="code" type="Int">
          The error code.
        </ParamField>

        <ParamField path="message" type="String" required>
          The error message.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

## MetricSettings

A Metric's settings, depending on its type.

<ParamField path="MetricSettings" type="CountMetricSettings | SumMetricSettings | CountDistinctMetricSettings | AverageMetricSettings | MinMetricSettings | MaxMetricSettings | CustomMetricSettings">
  <Expandable title="CountMetricSettings">
    Settings for Count Metrics.

    <ParamField path="filterSql" type="String">
      Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

      You can provide the filters in the form of SQL.
    </ParamField>

    <Expandable title="Deprecated Fields">
      <ParamField path="filters" type="[Filter!]" deprecated>
        Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

        <span style={{ fontStyle: 'italic' }}>deprecated: Use `filterSql` instead</span>

        <Expandable title="Filter">
          The fields of a filter.

          You can construct more complex filters using `and` and `or`. For example, to construct a filter equivalent to

          ```
          (value > 0 AND value <= 100) OR status = "confirmed"
          ```

          you could write

          ```
          {
            "column": "value",
            "operator": "GREATER_THAN",
            "value": "0",
            "and": [{
              "column": "value",
              "operator": "LESS_THAN_OR_EQUAL_TO",
              "value": "0"
            }],
            "or": [{
              "column": "status",
              "operator": "EQUALS",
              "value": "confirmed"
            }]
          }
          ```

          Note that `and` takes precedence over `or`.

          <ParamField path="column" type="String" required>
            The name of the column to filter on.
          </ParamField>

          <ParamField path="operator" type="FilterOperator" required>
            The operation to perform when comparing the column and filter values.

            See <a href="/docs/management-api/enums#filteroperator">FilterOperator</a>
          </ParamField>

          <ParamField path="value" type="String">
            The value to compare the column to.
          </ParamField>

          <ParamField path="and" type="[Filter!]">
            Additional filters to AND with this one. AND takes precedence over OR.
          </ParamField>

          <ParamField path="or" type="[Filter!]">
            Additional filters to OR with this one. AND takes precedence over OR.
          </ParamField>
        </Expandable>
      </ParamField>
    </Expandable>
  </Expandable>

  <Expandable title="SumMetricSettings">
    Settings for Sum Metrics.

    <ParamField path="filterSql" type="String">
      Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

      You can provide the filters in the form of SQL.
    </ParamField>

    <ParamField path="measure" type="Dimension" required>
      The Dimension to be summed.

      <Expandable title="Dimension">
        The Dimension object that represents a column in a table.

        <ParamField path="columnName" type="String" required>
          The column name it represents.
        </ParamField>

        <ParamField path="type" type="String" required>
          The column data type.
        </ParamField>

        <ParamField path="isNullable" type="Boolean">
          Whether the column is nullable.
        </ParamField>

        <Expandable title="Deprecated Fields">
          <ParamField path="isUniqueKey" type="Boolean" deprecated>
            Whether the column is a unique key.

            <span style={{ fontStyle: 'italic' }}>deprecated: This is Snowflake-specific, and will be removed</span>
          </ParamField>

          <ParamField path="stats" type="DimensionStatistics" deprecated>
            The statistics for the dimension values. Fetching statistics incurs query costs.

            <span style={{ fontStyle: 'italic' }}>deprecated: Issue normal queries for calculating stats</span>

            See <a href="/docs/management-api/types#dimensionstatistics">DimensionStatistics</a>
          </ParamField>
        </Expandable>
      </Expandable>
    </ParamField>

    <Expandable title="Deprecated Fields">
      <ParamField path="filters" type="[Filter!]" deprecated>
        Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

        <span style={{ fontStyle: 'italic' }}>deprecated: Use `filterSql` instead</span>

        <Expandable title="Filter">
          The fields of a filter.

          You can construct more complex filters using `and` and `or`. For example, to construct a filter equivalent to

          ```
          (value > 0 AND value <= 100) OR status = "confirmed"
          ```

          you could write

          ```
          {
            "column": "value",
            "operator": "GREATER_THAN",
            "value": "0",
            "and": [{
              "column": "value",
              "operator": "LESS_THAN_OR_EQUAL_TO",
              "value": "0"
            }],
            "or": [{
              "column": "status",
              "operator": "EQUALS",
              "value": "confirmed"
            }]
          }
          ```

          Note that `and` takes precedence over `or`.

          <ParamField path="column" type="String" required>
            The name of the column to filter on.
          </ParamField>

          <ParamField path="operator" type="FilterOperator" required>
            The operation to perform when comparing the column and filter values.

            See <a href="/docs/management-api/enums#filteroperator">FilterOperator</a>
          </ParamField>

          <ParamField path="value" type="String">
            The value to compare the column to.
          </ParamField>

          <ParamField path="and" type="[Filter!]">
            Additional filters to AND with this one. AND takes precedence over OR.
          </ParamField>

          <ParamField path="or" type="[Filter!]">
            Additional filters to OR with this one. AND takes precedence over OR.
          </ParamField>
        </Expandable>
      </ParamField>
    </Expandable>
  </Expandable>

  <Expandable title="CountDistinctMetricSettings">
    Settings for Count Distinct Metrics.

    <ParamField path="filterSql" type="String">
      Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

      You can provide the filters in the form of SQL.
    </ParamField>

    <ParamField path="dimension" type="Dimension" required>
      The Dimension where the count distinct operation is going to be performed.

      <Expandable title="Dimension">
        The Dimension object that represents a column in a table.

        <ParamField path="columnName" type="String" required>
          The column name it represents.
        </ParamField>

        <ParamField path="type" type="String" required>
          The column data type.
        </ParamField>

        <ParamField path="isNullable" type="Boolean">
          Whether the column is nullable.
        </ParamField>

        <Expandable title="Deprecated Fields">
          <ParamField path="isUniqueKey" type="Boolean" deprecated>
            Whether the column is a unique key.

            <span style={{ fontStyle: 'italic' }}>deprecated: This is Snowflake-specific, and will be removed</span>
          </ParamField>

          <ParamField path="stats" type="DimensionStatistics" deprecated>
            The statistics for the dimension values. Fetching statistics incurs query costs.

            <span style={{ fontStyle: 'italic' }}>deprecated: Issue normal queries for calculating stats</span>

            See <a href="/docs/management-api/types#dimensionstatistics">DimensionStatistics</a>
          </ParamField>
        </Expandable>
      </Expandable>
    </ParamField>

    <Expandable title="Deprecated Fields">
      <ParamField path="filters" type="[Filter!]" deprecated>
        Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

        <span style={{ fontStyle: 'italic' }}>deprecated: Use `filterSql` instead</span>

        <Expandable title="Filter">
          The fields of a filter.

          You can construct more complex filters using `and` and `or`. For example, to construct a filter equivalent to

          ```
          (value > 0 AND value <= 100) OR status = "confirmed"
          ```

          you could write

          ```
          {
            "column": "value",
            "operator": "GREATER_THAN",
            "value": "0",
            "and": [{
              "column": "value",
              "operator": "LESS_THAN_OR_EQUAL_TO",
              "value": "0"
            }],
            "or": [{
              "column": "status",
              "operator": "EQUALS",
              "value": "confirmed"
            }]
          }
          ```

          Note that `and` takes precedence over `or`.

          <ParamField path="column" type="String" required>
            The name of the column to filter on.
          </ParamField>

          <ParamField path="operator" type="FilterOperator" required>
            The operation to perform when comparing the column and filter values.

            See <a href="/docs/management-api/enums#filteroperator">FilterOperator</a>
          </ParamField>

          <ParamField path="value" type="String">
            The value to compare the column to.
          </ParamField>

          <ParamField path="and" type="[Filter!]">
            Additional filters to AND with this one. AND takes precedence over OR.
          </ParamField>

          <ParamField path="or" type="[Filter!]">
            Additional filters to OR with this one. AND takes precedence over OR.
          </ParamField>
        </Expandable>
      </ParamField>
    </Expandable>
  </Expandable>

  <Expandable title="AverageMetricSettings">
    Settings for Average Metrics.

    <ParamField path="filterSql" type="String">
      Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

      You can provide the filters in the form of SQL.
    </ParamField>

    <ParamField path="measure" type="Dimension" required>
      The Dimension to be averaged.

      <Expandable title="Dimension">
        The Dimension object that represents a column in a table.

        <ParamField path="columnName" type="String" required>
          The column name it represents.
        </ParamField>

        <ParamField path="type" type="String" required>
          The column data type.
        </ParamField>

        <ParamField path="isNullable" type="Boolean">
          Whether the column is nullable.
        </ParamField>

        <Expandable title="Deprecated Fields">
          <ParamField path="isUniqueKey" type="Boolean" deprecated>
            Whether the column is a unique key.

            <span style={{ fontStyle: 'italic' }}>deprecated: This is Snowflake-specific, and will be removed</span>
          </ParamField>

          <ParamField path="stats" type="DimensionStatistics" deprecated>
            The statistics for the dimension values. Fetching statistics incurs query costs.

            <span style={{ fontStyle: 'italic' }}>deprecated: Issue normal queries for calculating stats</span>

            See <a href="/docs/management-api/types#dimensionstatistics">DimensionStatistics</a>
          </ParamField>
        </Expandable>
      </Expandable>
    </ParamField>

    <Expandable title="Deprecated Fields">
      <ParamField path="filters" type="[Filter!]" deprecated>
        Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

        <span style={{ fontStyle: 'italic' }}>deprecated: Use `filterSql` instead</span>

        <Expandable title="Filter">
          The fields of a filter.

          You can construct more complex filters using `and` and `or`. For example, to construct a filter equivalent to

          ```
          (value > 0 AND value <= 100) OR status = "confirmed"
          ```

          you could write

          ```
          {
            "column": "value",
            "operator": "GREATER_THAN",
            "value": "0",
            "and": [{
              "column": "value",
              "operator": "LESS_THAN_OR_EQUAL_TO",
              "value": "0"
            }],
            "or": [{
              "column": "status",
              "operator": "EQUALS",
              "value": "confirmed"
            }]
          }
          ```

          Note that `and` takes precedence over `or`.

          <ParamField path="column" type="String" required>
            The name of the column to filter on.
          </ParamField>

          <ParamField path="operator" type="FilterOperator" required>
            The operation to perform when comparing the column and filter values.

            See <a href="/docs/management-api/enums#filteroperator">FilterOperator</a>
          </ParamField>

          <ParamField path="value" type="String">
            The value to compare the column to.
          </ParamField>

          <ParamField path="and" type="[Filter!]">
            Additional filters to AND with this one. AND takes precedence over OR.
          </ParamField>

          <ParamField path="or" type="[Filter!]">
            Additional filters to OR with this one. AND takes precedence over OR.
          </ParamField>
        </Expandable>
      </ParamField>
    </Expandable>
  </Expandable>

  <Expandable title="MinMetricSettings">
    Settings for Min Metrics.

    <ParamField path="filterSql" type="String">
      Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

      You can provide the filters in the form of SQL.
    </ParamField>

    <ParamField path="measure" type="Dimension" required>
      The Dimension to select the minimum from.

      <Expandable title="Dimension">
        The Dimension object that represents a column in a table.

        <ParamField path="columnName" type="String" required>
          The column name it represents.
        </ParamField>

        <ParamField path="type" type="String" required>
          The column data type.
        </ParamField>

        <ParamField path="isNullable" type="Boolean">
          Whether the column is nullable.
        </ParamField>

        <Expandable title="Deprecated Fields">
          <ParamField path="isUniqueKey" type="Boolean" deprecated>
            Whether the column is a unique key.

            <span style={{ fontStyle: 'italic' }}>deprecated: This is Snowflake-specific, and will be removed</span>
          </ParamField>

          <ParamField path="stats" type="DimensionStatistics" deprecated>
            The statistics for the dimension values. Fetching statistics incurs query costs.

            <span style={{ fontStyle: 'italic' }}>deprecated: Issue normal queries for calculating stats</span>

            See <a href="/docs/management-api/types#dimensionstatistics">DimensionStatistics</a>
          </ParamField>
        </Expandable>
      </Expandable>
    </ParamField>

    <Expandable title="Deprecated Fields">
      <ParamField path="filters" type="[Filter!]" deprecated>
        Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

        <span style={{ fontStyle: 'italic' }}>deprecated: Use `filterSql` instead</span>

        <Expandable title="Filter">
          The fields of a filter.

          You can construct more complex filters using `and` and `or`. For example, to construct a filter equivalent to

          ```
          (value > 0 AND value <= 100) OR status = "confirmed"
          ```

          you could write

          ```
          {
            "column": "value",
            "operator": "GREATER_THAN",
            "value": "0",
            "and": [{
              "column": "value",
              "operator": "LESS_THAN_OR_EQUAL_TO",
              "value": "0"
            }],
            "or": [{
              "column": "status",
              "operator": "EQUALS",
              "value": "confirmed"
            }]
          }
          ```

          Note that `and` takes precedence over `or`.

          <ParamField path="column" type="String" required>
            The name of the column to filter on.
          </ParamField>

          <ParamField path="operator" type="FilterOperator" required>
            The operation to perform when comparing the column and filter values.

            See <a href="/docs/management-api/enums#filteroperator">FilterOperator</a>
          </ParamField>

          <ParamField path="value" type="String">
            The value to compare the column to.
          </ParamField>

          <ParamField path="and" type="[Filter!]">
            Additional filters to AND with this one. AND takes precedence over OR.
          </ParamField>

          <ParamField path="or" type="[Filter!]">
            Additional filters to OR with this one. AND takes precedence over OR.
          </ParamField>
        </Expandable>
      </ParamField>
    </Expandable>
  </Expandable>

  <Expandable title="MaxMetricSettings">
    Settings for Max Metrics.

    <ParamField path="filterSql" type="String">
      Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

      You can provide the filters in the form of SQL.
    </ParamField>

    <ParamField path="measure" type="Dimension" required>
      The Dimension to select the maximum from.

      <Expandable title="Dimension">
        The Dimension object that represents a column in a table.

        <ParamField path="columnName" type="String" required>
          The column name it represents.
        </ParamField>

        <ParamField path="type" type="String" required>
          The column data type.
        </ParamField>

        <ParamField path="isNullable" type="Boolean">
          Whether the column is nullable.
        </ParamField>

        <Expandable title="Deprecated Fields">
          <ParamField path="isUniqueKey" type="Boolean" deprecated>
            Whether the column is a unique key.

            <span style={{ fontStyle: 'italic' }}>deprecated: This is Snowflake-specific, and will be removed</span>
          </ParamField>

          <ParamField path="stats" type="DimensionStatistics" deprecated>
            The statistics for the dimension values. Fetching statistics incurs query costs.

            <span style={{ fontStyle: 'italic' }}>deprecated: Issue normal queries for calculating stats</span>

            See <a href="/docs/management-api/types#dimensionstatistics">DimensionStatistics</a>
          </ParamField>
        </Expandable>
      </Expandable>
    </ParamField>

    <Expandable title="Deprecated Fields">
      <ParamField path="filters" type="[Filter!]" deprecated>
        Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

        <span style={{ fontStyle: 'italic' }}>deprecated: Use `filterSql` instead</span>

        <Expandable title="Filter">
          The fields of a filter.

          You can construct more complex filters using `and` and `or`. For example, to construct a filter equivalent to

          ```
          (value > 0 AND value <= 100) OR status = "confirmed"
          ```

          you could write

          ```
          {
            "column": "value",
            "operator": "GREATER_THAN",
            "value": "0",
            "and": [{
              "column": "value",
              "operator": "LESS_THAN_OR_EQUAL_TO",
              "value": "0"
            }],
            "or": [{
              "column": "status",
              "operator": "EQUALS",
              "value": "confirmed"
            }]
          }
          ```

          Note that `and` takes precedence over `or`.

          <ParamField path="column" type="String" required>
            The name of the column to filter on.
          </ParamField>

          <ParamField path="operator" type="FilterOperator" required>
            The operation to perform when comparing the column and filter values.

            See <a href="/docs/management-api/enums#filteroperator">FilterOperator</a>
          </ParamField>

          <ParamField path="value" type="String">
            The value to compare the column to.
          </ParamField>

          <ParamField path="and" type="[Filter!]">
            Additional filters to AND with this one. AND takes precedence over OR.
          </ParamField>

          <ParamField path="or" type="[Filter!]">
            Additional filters to OR with this one. AND takes precedence over OR.
          </ParamField>
        </Expandable>
      </ParamField>
    </Expandable>
  </Expandable>

  <Expandable title="CustomMetricSettings">
    Settings for Custom Metrics.

    <ParamField path="filterSql" type="String">
      Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

      You can provide the filters in the form of SQL.
    </ParamField>

    <ParamField path="expression" type="String" required>
      The expression that defines the aggregation function for this Metric.
    </ParamField>

    <Expandable title="Deprecated Fields">
      <ParamField path="filters" type="[Filter!]" deprecated>
        Metric Filters allow defining a Metric with a subset of records from the given Data Pool. If no Metric Filters are present, all records will be included. To filter at query time, add Dimensions and use the `filters` property on the `timeSeriesInput`, `counterInput`, or `leaderboardInput` objects. There is no need to add `filters` to be able to filter at query time.

        <span style={{ fontStyle: 'italic' }}>deprecated: Use `filterSql` instead</span>

        <Expandable title="Filter">
          The fields of a filter.

          You can construct more complex filters using `and` and `or`. For example, to construct a filter equivalent to

          ```
          (value > 0 AND value <= 100) OR status = "confirmed"
          ```

          you could write

          ```
          {
            "column": "value",
            "operator": "GREATER_THAN",
            "value": "0",
            "and": [{
              "column": "value",
              "operator": "LESS_THAN_OR_EQUAL_TO",
              "value": "0"
            }],
            "or": [{
              "column": "status",
              "operator": "EQUALS",
              "value": "confirmed"
            }]
          }
          ```

          Note that `and` takes precedence over `or`.

          <ParamField path="column" type="String" required>
            The name of the column to filter on.
          </ParamField>

          <ParamField path="operator" type="FilterOperator" required>
            The operation to perform when comparing the column and filter values.

            See <a href="/docs/management-api/enums#filteroperator">FilterOperator</a>
          </ParamField>

          <ParamField path="value" type="String">
            The value to compare the column to.
          </ParamField>

          <ParamField path="and" type="[Filter!]">
            Additional filters to AND with this one. AND takes precedence over OR.
          </ParamField>

          <ParamField path="or" type="[Filter!]">
            Additional filters to OR with this one. AND takes precedence over OR.
          </ParamField>
        </Expandable>
      </ParamField>
    </Expandable>
  </Expandable>
</ParamField>
