---
type: api
title: Update the connector filtering
description: Update the draft filtering configuration of a connector and marks the draft validation state as edited.
url: https://www.elastic.co/docs/api/doc/elasticsearch-serverless/operation/operation-connector-update-filtering
resource: https://www.elastic.co/docs/api/doc/elasticsearch-serverless/operation/operation-connector-update-filtering
products:
  - Elasticsearch Serverless
---

# Update the connector filtering

Authentication: required

Availability: Beta

## Paths

- `PUT` `/_connector/{connector_id}/_filtering`

#### Path parameters

- `connector_id` (string) — required
  The unique identifier of the connector to be updated

## Description

Update the draft filtering configuration of a connector and marks the draft validation state as edited.
The filtering draft is activated once validated by the running Elastic connector service.
The filtering property is used to configure sync rules (both basic and advanced) for a connector.

## Request body

`application/json`

- `filtering` (object[]) — optional
  - `active` (object) — required
    - `advanced_snippet` (object) — required
      - `created_at` (union oneOf) — optional
        One of: `string` or `number`
      - `updated_at` (union oneOf) — optional
        One of: `string` or `number`
      - `value` (object) — required
    - `rules` (object[]) — required
      - `created_at` (union oneOf) — optional
        One of: `string` or `number`
      - `field` (string) — required
      - `id` (string) — required
      - `order` (number) — required
      - `policy` (enum) — required
        Values: `exclude`, `include`
      - `rule` (enum) — required
        Values: `contains`, `ends_with`, `equals`, `regex`, `starts_with`, `>`, `<`
      - `updated_at` (union oneOf) — optional
        One of: `string` or `number`
      - `value` (string) — required
    - `validation` (object) — required
      - `errors` (object[]) — required
        - `ids` (string[]) — required
        - `messages` (string[]) — required
      - `state` (enum) — required
        Values: `edited`, `invalid`, `valid`
  - `domain` (string) — optional
  - `draft` (object) — required
    Same fields as `active` in `filtering`
- `rules` (object[]) — optional
  - `created_at` (union oneOf) — optional
    One of: `string` or `number`
  - `field` (string) — required
  - `id` (string) — required
  - `order` (number) — required
  - `policy` (enum) — required
    Values: `exclude`, `include`
  - `rule` (enum) — required
    Values: `contains`, `ends_with`, `equals`, `regex`, `starts_with`, `>`, `<`
  - `updated_at` (union oneOf) — optional
    One of: `string` or `number`
  - `value` (string) — required
- `advanced_snippet` (object) — optional
  - `created_at` (union oneOf) — optional
    One of: `string` or `number`
  - `updated_at` (union oneOf) — optional
    One of: `string` or `number`
  - `value` (object) — required

## Response

`application/json`

- `result` (enum)
  Values: `created`, `updated`, `deleted`, `not_found`, `noop`
## Code examples

### Connector update filtering request example1

#### Console

```console
PUT _connector/my-g-drive-connector/_filtering
{
    "rules": [
         {
            "field": "file_extension",
            "id": "exclude-txt-files",
            "order": 0,
            "policy": "exclude",
            "rule": "equals",
            "value": "txt"
        },
        {
            "field": "_",
            "id": "DEFAULT",
            "order": 1,
            "policy": "include",
            "rule": "regex",
            "value": ".*"
        }
    ]
}
```

#### JavaScript

```javascript
const response = await client.connector.updateFiltering({
  connector_id: "my-g-drive-connector",
  rules: [
    {
      field: "file_extension",
      id: "exclude-txt-files",
      order: 0,
      policy: "exclude",
      rule: "equals",
      value: "txt",
    },
    {
      field: "_",
      id: "DEFAULT",
      order: 1,
      policy: "include",
      rule: "regex",
      value: ".*",
    },
  ],
});
```

#### Python

```python
resp = client.connector.update_filtering(
    connector_id="my-g-drive-connector",
    rules=[
        {
            "field": "file_extension",
            "id": "exclude-txt-files",
            "order": 0,
            "policy": "exclude",
            "rule": "equals",
            "value": "txt"
        },
        {
            "field": "_",
            "id": "DEFAULT",
            "order": 1,
            "policy": "include",
            "rule": "regex",
            "value": ".*"
        }
    ],
)
```

#### curl

```curl
curl -X PUT "$ELASTICSEARCH_URL/_connector/my-g-drive-connector/_filtering" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "rules": [
      {
        "field": "file_extension",
        "id": "exclude-txt-files",
        "order": 0,
        "policy": "exclude",
        "rule": "equals",
        "value": "txt"
      },
      {
        "field": "_",
        "id": "DEFAULT",
        "order": 1,
        "policy": "include",
        "rule": "regex",
        "value": ".*"
      }
    ]
  }'
```

#### Java

```java
client.connector().updateFiltering(u -> u
    .connectorId("my-g-drive-connector")
    .rules(List.of(FilteringRule.of(f -> f
            .field("file_extension")
            .id("exclude-txt-files")
            .order(0)
            .policy(FilteringPolicy.Exclude)
            .rule(FilteringRuleRule.Equals)
            .value("txt")
        ),FilteringRule.of(f -> f
            .field("_")
            .id("DEFAULT")
            .order(1)
            .policy(FilteringPolicy.Include)
            .rule(FilteringRuleRule.Regex)
            .value(".*")
        )))
);
```

#### PHP

```php
$resp = $client->connector()->updateFiltering([
    "connector_id" => "my-g-drive-connector",
    "body" => [
        "rules" => array(
            [
                "field" => "file_extension",
                "id" => "exclude-txt-files",
                "order" => 0,
                "policy" => "exclude",
                "rule" => "equals",
                "value" => "txt",
            ],
            [
                "field" => "_",
                "id" => "DEFAULT",
                "order" => 1,
                "policy" => "include",
                "rule" => "regex",
                "value" => ".*",
            ],
        ),
    ],
]);
```

#### Ruby

```ruby
response = client.connector.update_filtering(
  connector_id: "my-g-drive-connector",
  body: {
    "rules": [
      {
        "field": "file_extension",
        "id": "exclude-txt-files",
        "order": 0,
        "policy": "exclude",
        "rule": "equals",
        "value": "txt"
      },
      {
        "field": "_",
        "id": "DEFAULT",
        "order": 1,
        "policy": "include",
        "rule": "regex",
        "value": ".*"
      }
    ]
  }
)
```

### Connector update filtering request example2

#### Console

```console
PUT _connector/my-sql-connector/_filtering
{
    "advanced_snippet": {
        "value": [{
            "tables": [
                "users",
                "orders"
            ],
            "query": "SELECT users.id AS id, orders.order_id AS order_id FROM users JOIN orders ON users.id = orders.user_id"
        }]
    }
}
```

#### JavaScript

```javascript
const response = await client.connector.updateFiltering({
  connector_id: "my-sql-connector",
  advanced_snippet: {
    value: [
      {
        tables: ["users", "orders"],
        query:
          "SELECT users.id AS id, orders.order_id AS order_id FROM users JOIN orders ON users.id = orders.user_id",
      },
    ],
  },
});
```

#### Python

```python
resp = client.connector.update_filtering(
    connector_id="my-sql-connector",
    advanced_snippet={
        "value": [
            {
                "tables": [
                    "users",
                    "orders"
                ],
                "query": "SELECT users.id AS id, orders.order_id AS order_id FROM users JOIN orders ON users.id = orders.user_id"
            }
        ]
    },
)
```

#### curl

```curl
curl -X PUT "$ELASTICSEARCH_URL/_connector/my-sql-connector/_filtering" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "advanced_snippet": {
      "value": [
        {
          "tables": [
            "users",
            "orders"
          ],
          "query": "SELECT users.id AS id, orders.order_id AS order_id FROM users JOIN orders ON users.id = orders.user_id"
        }
      ]
    }
  }'
```

#### Java

```java
client.connector().updateFiltering(u -> u
    .advancedSnippet(a -> a
        .value(JsonData.fromJson("""
[{"tables":["users","orders"],"query":"SELECT users.id AS id, orders.order_id AS order_id FROM users JOIN orders ON users.id = orders.user_id"}]
"""))
    )
    .connectorId("my-sql-connector")
);
```

#### PHP

```php
$resp = $client->connector()->updateFiltering([
    "connector_id" => "my-sql-connector",
    "body" => [
        "advanced_snippet" => [
            "value" => array(
                [
                    "tables" => array(
                        "users",
                        "orders",
                    ),
                    "query" => "SELECT users.id AS id, orders.order_id AS order_id FROM users JOIN orders ON users.id = orders.user_id",
                ],
            ),
        ],
    ],
]);
```

#### Ruby

```ruby
response = client.connector.update_filtering(
  connector_id: "my-sql-connector",
  body: {
    "advanced_snippet": {
      "value": [
        {
          "tables": [
            "users",
            "orders"
          ],
          "query": "SELECT users.id AS id, orders.order_id AS order_id FROM users JOIN orders ON users.id = orders.user_id"
        }
      ]
    }
  }
)
```

## Response examples

#### Connector update filtering response example1

`application/json`

```json
{
  "result": "updated"
}
```

