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

# Target Settings

> Modifying Hotglue Target Settings

# What are Target Settings?

Target settings determine:

* How a Target appears to your tenants
* How you and your tenants authenticate to the Target
* The underlying taps and targets that your Target uses

## Example Target Settings

```json theme={null}
{
  "target": "postgres-beta",
  "flowType": "all",
  "domain": "postgresql.org",
  "label": "PostgreSQL",
  "version": "v2",
  "type": "api",
  "icon": "https://s3.amazonaws.com/cdn.hotglue.xyz/images/logos/postgres.svg",
  "validation_supported": true,
  "connect_ui_params": {
    "host": {
      "label": "Host Name",
      "description": "Your PostgreSQL server host"
    },
    "port": {
      "label": "Port",
      "description": "Your PostgreSQL server port"
    },
    "dbname": {
      "label": "Database",
      "description": "Your PostgreSQL database name"
    },
    "user": {
      "label": "User",
      "description": "Your PostgreSQL user"
    },
    "password": {
      "label": "Password",
      "description": "Your PostgreSQL password",
      "type": "password"
    },
    "default_target_schema": {
      "label": "Schema",
      "description": "Your PostgreSQL schema (ie. public)"
    },
  },
  "connector_props": {
    "singer_sdk": true
  }
}
```

## Understanding the Target Fields

### `target`

The `target` field is a unique identifier for the target. It is used internally to reference the target and should be unique across all targets.

### `label`

The `label` field is a human-readable name for the target. This is the name that will be displayed in the user interface.

### `icon`

The `icon` field is a URL to an image that represents the target. This icon will be displayed in the user interface alongside the target's label.

### `tags`

The `tags` field is an array of strings that categorize the target. These tags can be used to filter and search for targets.

### `domain`

The `domain` field specifies the primary domain associated with the target. This is typically the domain of the service the target integrates with.

### `type`

The `type` field specifies the authentication method used by the target. Accepted values are `oauth`, `api`, and `iam`.

### `isForked`

The `isForked` field indicates whether this target has been modified from the default hotglue target settings.

### `install_uri`

The `install_uri` field can be used to overwrite the default git repo that the target will be installed from:

```
"install_uri": "git+https://github.com/your-org/target-bigquery.git@v1.2.4"
```

You can also override the `install_uri` for particular tenants by instead using:

```
"install_uri": {
  "env": "git+..." // Default install URI,
  "tenant": {
    "TENANT_ID": "git+..." // Install URI for particular tenant
  }
}
```

### `is_private_repo`

The `is_private_repo` field tells hotglue to use your configured [git access token](https://docs.hotglue.com/environment-settings/job-settings#private-repositories) when installing your target.

```json theme={null}
"install_uri": "git+https://github.com/your-org/target-googleads.git@v1.2.4" // Private Repository
"is_private_repo": true
```

### `formattable_fields`

The `formattable_fields` flag allows you to set a list of config flags that can be used as variables for your auth URLs.

```json theme={null}
"formattable_fields": ["shop", "tenant_id"]
```

For example, if you set:

```json theme={null}
"auth_url": "https://{shop}.shopify.com/token"
```

And the tenant has config:

```json theme={null}
{
  ...
  "shop": "usa",
  ...
}
```

then hotglue will use the following `auth_url` when completing the OAuth flow:

```
https://usa.shopify.com/token
```

All fields specified in the `connect_ui_params` are used as `formattable_fields` by default.

### `version`

The `version` field adds a version label chip to the target card in the UI. This helps tenants identify which version of the target they are using.

```json theme={null}
"version": "v2"
```

### `validation_supported`

The `validation_supported` field (boolean) indicates whether the target validates a tenant's credentials during account linking.

```json theme={null}
"validation_supported": true
```

### `flowType`

The flowType field controls whether the connector can be used in both source and target flows. When set to all, the connector becomes available in both source and target flows.

```json theme={null}
"flowType": "all"
```

### `target_url`

The `target_url` field specifies the OAuth authorization URL used to initiate the authentication flow for this target. This is the URL the tenant is redirected to when connecting the target.

```json theme={null}
"target_url": "https://app.example.com/oauth/authorize?response_type=code"
```

### `auth_url`

The `auth_url` field specifies the OAuth token exchange URL used to obtain access tokens after the tenant has authorized the target.

```json theme={null}
"auth_url": "https://app.example.com/oauth/token"
```

### `revoke_url`

The `revoke_url` field specifies the URL called to revoke OAuth tokens when a tenant disconnects the target.

```json theme={null}
"revoke_url": "https://app.example.com/oauth/revoke"
```

### `dynamic_urls`

The `dynamic_urls` field allows the target to construct URLs dynamically at runtime using tenant-specific config values. When set to `true`, placeholders in `target_url` and `auth_url` are replaced with values from the tenant's config.

For example, Databricks uses a host-specific URL entered by the tenant:

```json theme={null}
"target_url": "https://{host}/oidc/v1/authorize?response_type=code&scope=sql%20offline_access",
"auth_url": "https://{host}/oidc/v1/token",
"dynamic_urls": true,
"connect_ui_params": {
    "host": {
        "label": "Host",
        "description": "Databricks SQL Warehouse Host"
    }
}
```

### `basic_client_credentials`

The `basic_client_credentials` field uses HTTP Basic Auth for client credentials instead of standard OAuth.

```json theme={null}
"basic_client_credentials": true
```

### `connector_repo`

The `connector_repo` field specifies the git repository URL for a hotglue-maintained target. This field only works with hotglue-maintained repositories.

```json theme={null}
"connector_repo": "git+https://github.com/hotgluexyz/target-example.git"
```

### `connector_tag`

The `connector_tag` field specifies the version tag of a hotglue-maintained target repository to install. This field only works with hotglue-maintained repositories.

```json theme={null}
"connector_tag": "^v1.0.0"
```

### `oauth_settings`

The `oauth_settings` field contains advanced OAuth configuration for the target. The following sub-fields are supported:

| Field               | Type    | Description                                                            |
| ------------------- | ------- | ---------------------------------------------------------------------- |
| `use_pkce_verifier` | boolean | Enables PKCE (Proof Key for Code Exchange) for enhanced OAuth security |
| `use_basic_auth`    | boolean | Sends client credentials using HTTP Basic Auth during token exchange   |
| `use_json_payload`  | boolean | Sends the token request as a JSON payload instead of form-encoded data |
| `encode_state`      | boolean | Encodes the OAuth state parameter before sending                       |

```json theme={null}
"oauth_settings": {
    "use_pkce_verifier": true
}
```

### `connect_ui_params`

The `connect_ui_params` field defines the fields shown to tenants in the connection UI. Each field key maps to a parameter object that supports the following properties:

| Property          | Type    | Description                                                                                                                                  |
| ----------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `label`           | string  | Human-readable label shown to the tenant for this field                                                                                      |
| `description`     | string  | Helper text displayed below the field to guide the tenant                                                                                    |
| `type`            | string  | Input type for the field. Accepted values: `password`, `boolean`, `select`, `number`, `list`, `multiline`. Defaults to text if not specified |
| `required`        | boolean | Whether this field is required for the tenant to connect. Defaults to `true` if not specified                                                |
| `adornment`       | object  | Adds prefix or suffix text around the input field                                                                                            |
| `adornment.start` | string  | Text displayed before the input field (e.g. `https://`)                                                                                      |
| `adornment.end`   | string  | Text displayed after the input field (e.g. `.myshopify.com`)                                                                                 |
| `options`         | array   | Used when `type` is `select`. Defines the list of options the tenant can choose from                                                         |
| `options[].name`  | string  | Display name for the select option                                                                                                           |
| `options[].value` | string  | Value submitted when this option is selected                                                                                                 |
| `params`          | object  | Used when `type` is `list`. Defines the sub-fields for each item in the list                                                                 |

The following examples show fields using different property combinations:

```json theme={null}
"connect_ui_params": {
    "host": {
        "label": "Host Name",
        "description": "Your server host"
    },
    "password": {
        "label": "Password",
        "description": "Your password",
        "type": "password"
    },
    "region": {
        "label": "Region",
        "type": "select",
        "options": [
            { "name": "US East", "value": "us-east-1" },
            { "name": "EU West", "value": "eu-west-1" }
        ]
    },
    "ssl": {
        "label": "Use SSL",
        "type": "boolean",
        "required": false
    }
}
```

### `connector_props`

The `connector_props` field contains additional configuration properties for the target. The following sub-fields are supported:

| Field             | Type    | Description                                                                                                                |
| ----------------- | ------- | -------------------------------------------------------------------------------------------------------------------------- |
| `singer_sdk`      | boolean | Indicates this target is built using the Singer SDK                                                                        |
| `static_data`     | boolean | Indicates this target handles arbitrary file-based data sources such as file storage, Google Drive, or blob storage        |
| `tap_driver_name` | string  | Overrides the default driver name used to run the connector. Use this when the driver name differs from the connector `id` |

```json theme={null}
"connector_props": {
    "singer_sdk": true,
    "tap_driver_name": "example"
}
```

### `config`

The `config` block defines default configuration values that are automatically applied to every new tenant connecting to this target. Tenants inherit these values without needing to configure them manually.

The only universal config field supported across all targets is `start_date`. All other config fields are target-specific — refer to the individual target's documentation for the full list of supported fields.

| Field        | Type   | Description                                         |
| ------------ | ------ | --------------------------------------------------- |
| `start_date` | string | Default start date for data sync in ISO 8601 format |

```json theme={null}
"config": {
    "start_date": "2000-01-01T00:00:00.000Z"
}
```
