# Server

Where the data physically lives, including the connection target and the per-technology settings for each supported server type.

## Server {#server}

type: Server

Data source details of where data is physically stored.

| Property | Type | Required | Description |
|---|---|---|---|
| `customProperties` | [CustomProperties](/docs/reference/data-contract/custom-properties/#custom-properties) | No |  |
| `description` | string | No | Description of the server. |
| `environment` | string | No | Environment of the server. Examples: `prod`, `preprod`, `dev`, `uat`. |
| `roles` | [Role](/docs/reference/data-contract/team/#role)[] | No | List of roles that have access to the server. |
| `server` | string | Yes | Identifier of the server. |
| `type` | string | Yes | Type of the server. Valid values are: `api`, `athena`, `azure`, `bigquery`, `clickhouse`, `databricks`, `denodo`, `dremio`, `duckdb`, `glue`, `cloudsql`, `db2`, `informix`, `kafka`, `kinesis`, `local`, `mysql`, `oracle`, `postgresql`, `postgres`, `presto`, `pubsub`, `redshift`, `s3`, `sftp`, `snowflake`, `sqlserver`, `synapse`, `trino`, `vertica`, `custom`. |

### Specific `Type` Properties & Types

- `api` ([See ApiServer](#rest-api))
- `athena` ([See AthenaServer](#amazon-athena))
- `azure` ([See AzureServer](#azure-blob-adls))
- `bigquery` ([See BigQueryServer](#google-bigquery))
- `clickhouse` ([See ClickHouseServer](#clickhouse))
- `databricks` ([See DatabricksServer](#databricks))
- `denodo` ([See DenodoServer](#denodo))
- `dremio` ([See DremioServer](#dremio))
- `duckdb` ([See DuckdbServer](#duckdb))
- `glue` ([See GlueServer](#aws-glue))
- `cloudsql` ([See GoogleCloudSqlServer](#google-cloud-sql))
- `db2` ([See IBMDB2Server](#ibm-db2))
- `informix` ([See InformixServer](#ibm-informix))
- `custom` ([See CustomServer](#custom))
- `kafka` ([See KafkaServer](#apache-kafka))
- `kinesis` ([See KinesisServer](#amazon-kinesis))
- `local` ([See LocalServer](#local))
- `mysql` ([See MySqlServer](#mysql))
- `oracle` ([See OracleServer](#oracle))
- `postgresql` ([See PostgresServer](#postgresql))
- `postgres` ([See PostgresServer](#postgresql))
- `presto` ([See PrestoServer](#presto))
- `pubsub` ([See PubSubServer](#google-pubsub))
- `redshift` ([See RedshiftServer](#amazon-redshift))
- `s3` ([See S3Server](#amazon-s3))
- `sftp` ([See SftpServer](#sftp))
- `snowflake` ([See SnowflakeServer](#snowflake))
- `sqlserver` ([See SqlserverServer](#microsoft-sql-server))
- `synapse` ([See SynapseServer](#azure-synapse))
- `trino` ([See TrinoServer](#trino))
- `vertica` ([See VerticaServer](#vertica))

## Server Source {#server-source}

type: ServerSource

Child elements:

- [ApiServer](#rest-api)
- [AthenaServer](#amazon-athena)
- [AzureServer](#azure-blob-adls)
- [BigQueryServer](#google-bigquery)
- [ClickHouseServer](#clickhouse)
- [CustomServer](#custom)
- [DatabricksServer](#databricks)
- [DenodoServer](#denodo)
- [DremioServer](#dremio)
- [DuckdbServer](#duckdb)
- [GlueServer](#aws-glue)
- [GoogleCloudSqlServer](#google-cloud-sql)
- [IBMDB2Server](#ibm-db2)
- [InformixServer](#ibm-informix)
- [KafkaServer](#apache-kafka)
- [KinesisServer](#amazon-kinesis)
- [LocalServer](#local)
- [MySqlServer](#mysql)
- [OracleServer](#oracle)
- [PostgresServer](#postgresql)
- [PrestoServer](#presto)
- [PubSubServer](#google-pubsub)
- [RedshiftServer](#amazon-redshift)
- [S3Server](#amazon-s3)
- [SftpServer](#sftp)
- [SnowflakeServer](#snowflake)
- [SqlserverServer](#microsoft-sql-server)
- [SynapseServer](#azure-synapse)
- [TrinoServer](#trino)
- [VerticaServer](#vertica)

### REST API {#rest-api}

type: AthenaServer

| Property | Type | Required | Description |
|---|---|---|---|
| `location` | string | Yes | The url to the API. Examples: `https://api.example.com/v1`. |

### Amazon Athena {#amazon-athena}

type: AthenaServer

| Property | Type | Required | Description |
|---|---|---|---|
| `catalog` | string | No | Identify the name of the Data Source, also referred to as a Catalog. Default value is: `awsdatacatalog`. |
| `regionName` | string | No | The region your AWS account uses. Examples: `eu-west-1`. |
| `schema` | string | Yes | Identify the schema in the data source in which your tables exist. |
| `stagingDir` | string | No | Amazon Athena automatically stores query results and metadata information for each query that runs in a query result location that you can specify in Amazon S3. Examples: `s3://my_storage_account_name/my_container/path`. |

### Azure Blob / ADLS {#azure-blob-adls}

type: AzureServer

| Property | Type | Required | Description |
|---|---|---|---|
| `delimiter` | string | No | Only for format = json. How multiple json documents are delimited within one file Valid values are: `new_line`, `array`. |
| `format` | string | Yes | File format. Valid values are: `parquet`, `delta`, `json`, `csv`. |
| `location` | string | Yes | Fully qualified path to Azure Blob Storage or Azure Data Lake Storage (ADLS), supports globs. Examples: `az://my_storage_account_name.blob.core.windows.net/my_container/path/*.parquet`, `abfss://my_storage_account_name.dfs.core.windows.net/my_container_name/path/*.parquet`. |

### Google BigQuery {#google-bigquery}

type: BigQueryServer

| Property | Type | Required | Description |
|---|---|---|---|
| `dataset` | string | Yes | The GCP dataset name. |
| `project` | string | Yes | The GCP project name. |

### ClickHouse {#clickhouse}

type: ClickHouseServer

| Property | Type | Required | Description |
|---|---|---|---|
| `database` | string | Yes | The name of the database. |
| `host` | string | Yes | The host of the ClickHouse server. |
| `port` | integer | Yes | The port to the ClickHouse server. |

### Custom {#custom}

type: CustomServer

| Property | Type | Required | Description |
|---|---|---|---|
| `account` | string | No | Account used by the server. |
| `catalog` | string | No | Name of the catalog. |
| `database` | string | No | Name of the database. |
| `dataset` | string | No | Name of the dataset. |
| `delimiter` | string | No | Delimiter. |
| `endpointUrl` | string | No | Server endpoint. |
| `format` | string | No | File format. |
| `host` | string | No | Host name or IP address. |
| `location` | string | No | A URL to a location. |
| `path` | string | No | Relative or absolute path to the data file(s). |
| `port` | integer | No | Port to the server. No default value is assumed for custom servers. |
| `project` | string | No | Project name. |
| `region` | string | No | Cloud region. |
| `regionName` | string | No | Region name. |
| `schema` | string | No | Name of the schema. |
| `serviceName` | string | No | Name of the service. |
| `stagingDir` | string | No | Staging directory. |
| `warehouse` | string | No | Name of the cluster or warehouse. |

### Databricks {#databricks}

type: DatabricksServer

| Property | Type | Required | Description |
|---|---|---|---|
| `catalog` | string | Yes | The name of the Hive or Unity catalog |
| `host` | string | No | The Databricks host Examples: `dbc-abcdefgh-1234.cloud.databricks.com`. |
| `schema` | string | Yes | The schema name in the catalog |

### Denodo {#denodo}

type: DenodoServer

| Property | Type | Required | Description |
|---|---|---|---|
| `database` | string | No | The name of the database. |
| `host` | string | Yes | The host of the Denodo server. |
| `port` | integer | Yes | The port of the Denodo server. |

### Dremio {#dremio}

type: DremioServer

| Property | Type | Required | Description |
|---|---|---|---|
| `host` | string | Yes | The host of the Dremio server. |
| `port` | integer | Yes | The port of the Dremio server. |
| `schema` | string | No | The name of the schema. |

### DuckDB {#duckdb}

type: DuckdbServer

| Property | Type | Required | Description |
|---|---|---|---|
| `database` | string | Yes | Path to duckdb database file. |
| `schema` | integer | No | The name of the schema. |

### AWS Glue {#aws-glue}

type: GlueServer

| Property | Type | Required | Description |
|---|---|---|---|
| `account` | string | Yes | The AWS Glue account Examples: `1234-5678-9012`. |
| `database` | string | Yes | The AWS Glue database name Examples: `my_database`. |
| `format` | string | No | The format of the files Examples: `parquet`, `csv`, `json`, `delta`. |
| `location` | string | No | The AWS S3 path. Must be in the form of a URL. Examples: `s3://datacontract-example-orders-latest/data/{model}`. |

### Google Cloud SQL {#google-cloud-sql}

type: GoogleCloudSqlServer

| Property | Type | Required | Description |
|---|---|---|---|
| `database` | string | Yes | The name of the database. |
| `host` | string | Yes | The host of the Google Cloud Sql server. |
| `port` | integer | Yes | The port of the Google Cloud Sql server. |
| `schema` | string | Yes | The name of the schema. |

### IBM Db2 {#ibm-db2}

type: IBMDB2Server

| Property | Type | Required | Description |
|---|---|---|---|
| `database` | string | Yes | The name of the database. |
| `host` | string | Yes | The host of the IBM DB2 server. |
| `port` | integer | Yes | The port of the IBM DB2 server. |
| `schema` | string | No | The name of the schema. |

### IBM Informix {#ibm-informix}

type: InformixServer

| Property | Type | Required | Description |
|---|---|---|---|
| `database` | string | Yes | The name of the database. |
| `host` | string | Yes | The host to the Informix server.  |
| `port` | integer | No | The port to the Informix server. Defaults to 9088. |

### Apache Kafka {#apache-kafka}

type: KafkaServer

Kafka Server

| Property | Type | Required | Description |
|---|---|---|---|
| `format` | string | No | The format of the messages. Default value is: `json`. Examples: `json`, `avro`, `protobuf`, `xml`. |
| `host` | string | Yes | The bootstrap server of the kafka cluster. |

### Amazon Kinesis {#amazon-kinesis}

type: KinesisDataStreamsServer

Kinesis Data Streams Server

| Property | Type | Required | Description |
|---|---|---|---|
| `format` | string | No | The format of the record Examples: `json`, `avro`, `protobuf`. |
| `region` | string | No | AWS region. Examples: `eu-west-1`. |

### Local {#local}

type: LocalServer

| Property | Type | Required | Description |
|---|---|---|---|
| `format` | string | Yes | The format of the file(s) Examples: `json`, `parquet`, `delta`, `csv`. |
| `path` | string | Yes | The relative or absolute path to the data file(s). Examples: `./folder/data.parquet`, `./folder/*.parquet`. |

### MySQL {#mysql}

type: MySqlServer

| Property | Type | Required | Description |
|---|---|---|---|
| `database` | string | Yes | The name of the database. |
| `host` | string | Yes | The host of the MySql server. |
| `port` | integer | Yes | The port of the MySql server. |

### Oracle {#oracle}

type: OracleServer

| Property | Type | Required | Description |
|---|---|---|---|
| `host` | string | Yes | The host to the oracle server Examples: `localhost`. |
| `port` | integer | Yes | The port to the oracle server. Examples: `1523`. |
| `serviceName` | string | Yes | The name of the service. Examples: `service`. |

### PostgreSQL {#postgresql}

type: PostgresServer

| Property | Type | Required | Description |
|---|---|---|---|
| `database` | string | Yes | The name of the database. |
| `host` | string | Yes | The host to the Postgres server |
| `port` | integer | Yes | The port to the Postgres server. |
| `schema` | string | Yes | The name of the schema in the database. |

### Presto {#presto}

type: PrestoServer

| Property | Type | Required | Description |
|---|---|---|---|
| `catalog` | string | No | The name of the catalog. Examples: `postgres`. |
| `host` | string | Yes | The host to the Presto server Examples: `localhost:8080`. |
| `schema` | string | No | The name of the schema. Examples: `public`. |

### Google Pub/Sub {#google-pubsub}

type: PubSubServer

| Property | Type | Required | Description |
|---|---|---|---|
| `project` | string | Yes | The GCP project name. |

### Amazon Redshift {#amazon-redshift}

type: RedshiftServer

| Property | Type | Required | Description |
|---|---|---|---|
| `account` | string | No | The account used by the server. |
| `database` | string | Yes | The name of the database. |
| `host` | string | No | An optional string describing the server. |
| `region` | string | No | AWS region of Redshift server. Examples: `us-east-1`. |
| `schema` | string | Yes | The name of the schema. |

### Amazon S3 {#amazon-s3}

type: S3Server

| Property | Type | Required | Description |
|---|---|---|---|
| `delimiter` | string | No | Only for format = json. How multiple json documents are delimited within one file Valid values are: `new_line`, `array`. |
| `endpointUrl` | string | No | The server endpoint for S3-compatible servers. Examples: `https://minio.example.com`. |
| `format` | string | No | File format. Valid values are: `parquet`, `delta`, `json`, `csv`. |
| `location` | string | Yes | S3 URL, starting with `s3://` Examples: `s3://datacontract-example-orders-latest/data/{model}/*.json`. |

### SFTP {#sftp}

type: SftpServer

| Property | Type | Required | Description |
|---|---|---|---|
| `delimiter` | string | No | Only for format = json. How multiple json documents are delimited within one file Valid values are: `new_line`, `array`. |
| `format` | string | No | File format. Valid values are: `parquet`, `delta`, `json`, `csv`. |
| `location` | string | Yes | SFTP URL, starting with `sftp://` Examples: `sftp://123.123.12.123/{model}/*.json`. |

### Snowflake {#snowflake}

type: SnowflakeServer

| Property | Type | Required | Description |
|---|---|---|---|
| `account` | string | Yes | The Snowflake account used by the server. |
| `database` | string | Yes | The name of the database. |
| `host` | string | No | The host to the Snowflake server |
| `port` | integer | No | The port to the Snowflake server. |
| `schema` | string | Yes | The name of the schema. |
| `warehouse` | string | No | The name of the cluster of resources that is a Snowflake virtual warehouse. |

### Microsoft SQL Server {#microsoft-sql-server}

type: SqlserverServer

| Property | Type | Required | Description |
|---|---|---|---|
| `database` | string | Yes | The name of the database. Examples: `database`. |
| `host` | string | Yes | The host to the database server Examples: `localhost`. |
| `port` | integer | No | The port to the database server. Default value is: `1433`. Examples: `1433`. |
| `schema` | string | Yes | The name of the schema in the database. Examples: `dbo`. |

### Azure Synapse {#azure-synapse}

type: SynapseServer

| Property | Type | Required | Description |
|---|---|---|---|
| `database` | string | Yes | The name of the database. |
| `host` | string | Yes | The host of the Synapse server. |
| `port` | integer | Yes | The port of the Synapse server. |

### Trino {#trino}

type: TrinoServer

| Property | Type | Required | Description |
|---|---|---|---|
| `catalog` | string | Yes | The name of the catalog. Examples: `hive`. |
| `host` | string | Yes | The Trino host URL. Examples: `localhost`. |
| `port` | integer | Yes | The Trino port. |
| `schema` | string | Yes | The name of the schema in the database. Examples: `my_schema`. |

### Vertica {#vertica}

type: VerticaServer

| Property | Type | Required | Description |
|---|---|---|---|
| `database` | string | Yes | The name of the database. |
| `host` | string | Yes | The host of the Vertica server. |
| `port` | integer | Yes | The port of the Vertica server. |
| `schema` | string | Yes | The name of the schema. |
