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

# Update mutable Dataset Pair configuration

> Requires the GV.APIContributor application role, or a higher role (Owner > Contributor > Reader).

API · Dataset Pairs

PATCH `/api/v1/dataset-pairs/{datasetPairUuid}`

Requires the GV.APIContributor application role, or a higher role (Owner > Contributor > Reader).

Operation ID · update\_dataset\_pair

## Request example

```bash theme={null}
curl --request PATCH \
  --url 'https://api.generalvalidation.com/api/v1/dataset-pairs/88888888-8888-4888-8888-888888888888' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <access-token>' \
  --header 'If-Match: "<etag-from-latest-get>"' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Settled orders",
  "sourceFilters": [
    {
      "field": "status",
      "operator": "=",
      "value": "settled"
    }
  ]
}'
```

## Authentication and access

* **Required role:** GV.APIContributor
* **Data classification:** metadata
* **Side effects:** configurationWrite

Use an authentication scheme declared below. Ordinary workloads use application tokens; signed-in users use delegated tokens and Organization membership. Activation and invitation acceptance require a person, and execution callbacks require their registered identity.

* Microsoft Entra delegated user token
* Microsoft Entra application token

## Parameters

### datasetPairUuid

path Required

Opaque Dataset Pair UUID.

`string (uuid)`

Opaque Dataset Pair UUID.

### If-Match

header Required

Exact strong ETag from the current resource. Weak validators, wildcards, and tag lists are rejected.

`string`

maximum length: 1024

## Request body

Required

### application/json

**Schema V1DatasetPairUpdate**

`object`

minimum properties: 1

Properties

`joinKeys`

`array<V1JoinKey> | null`

Ordered source/target join bindings. Every source.field and target.field must be unique within the list.

unique by: source.field, target.field

Any of

**Option 1: array\<V1JoinKey>**

`array<V1JoinKey>`

maximum items: 5

Array items

**Schema V1JoinKey**

`object`

Properties

`source`— Required

**Schema V1FieldBinding**

`object`

All of

**Constraint 1: unknown**

`unknown`

**Conditional constraints**

```
{
  "if": {
    "properties": {
      "format": {
        "pattern": "\\S"
      }
    },
    "required": [
      "format"
    ]
  },
  "then": {
    "properties": {
      "transform": {
        "enum": [
          "to_date",
          "to_timestamp"
        ]
      }
    },
    "required": [
      "transform"
    ]
  }
}
```

Properties

`field`— Required

`string`

minimum length: 1 · maximum length: 1024

`format`

`string`

Optional parser format accepted only for date/timestamp transforms.

* **Default:** `""`

maximum length: 64

`transform`

**Schema V1FieldTransform**

`string`

* **Allowed values:** `"none"`,`"to_string"`,`"to_long"`,`"to_decimal"`,`"to_double"`,`"to_boolean"`,`"to_date"`,`"to_timestamp"`,`"to_peer_numeric"`
* **Default:** `"none"`

Additional properties are not allowed.

`target`— Required

**Schema V1FieldBinding**

`object`

All of

**Constraint 1: unknown**

`unknown`

**Conditional constraints**

```
{
  "if": {
    "properties": {
      "format": {
        "pattern": "\\S"
      }
    },
    "required": [
      "format"
    ]
  },
  "then": {
    "properties": {
      "transform": {
        "enum": [
          "to_date",
          "to_timestamp"
        ]
      }
    },
    "required": [
      "transform"
    ]
  }
}
```

Properties

`field`— Required

`string`

minimum length: 1 · maximum length: 1024

`format`

`string`

Optional parser format accepted only for date/timestamp transforms.

* **Default:** `""`

maximum length: 64

`transform`

**Schema V1FieldTransform**

`string`

* **Allowed values:** `"none"`,`"to_string"`,`"to_long"`,`"to_decimal"`,`"to_double"`,`"to_boolean"`,`"to_date"`,`"to_timestamp"`,`"to_peer_numeric"`
* **Default:** `"none"`

Additional properties are not allowed.

Additional properties are not allowed.

**Option 2: null**

`null`

`name`

`string`

minimum length: 1 · maximum length: 512

`sourceFilters`

`array<V1ScalarFilter | V1InFilter | V1NullFilter> | null`

Any of

**Option 1: array\<V1ScalarFilter | V1InFilter | V1NullFilter>**

`array<V1ScalarFilter | V1InFilter | V1NullFilter>`

maximum items: 32

Array items

`V1ScalarFilter | V1InFilter | V1NullFilter`

One of

Selected by `operator`.

**Option 1: V1ScalarFilter**

**Schema V1ScalarFilter**

`object`

Properties

`field`— Required

`string`

minimum length: 1 · maximum length: 1024

`operator`— Required

`string`

* **Allowed values:** `"="`,`"<>"`,`"<"`,`"<="`,`">"`,`">="`

`value`— Required

`string | integer | number | boolean`

Any of

**Option 1: string**

`string`

maximum length: 4096

**Option 2: integer**

`integer`

minimum: -9223372036854776000 · maximum: 9223372036854776000

**Option 3: number**

`number`

**Option 4: string**

`string`

pattern: ^(?!^\[-+.]*$)[+-]?0*(?:\d&#123;0,26&#125;|(?=[\d.]&#123;1,39&#125;0*$)\d\{0,26}.\d\{0,12}0*\$)

**Option 5: boolean**

`boolean`

Additional properties are not allowed.

**Option 2: V1InFilter**

**Schema V1InFilter**

`object`

Properties

`field`— Required

`string`

minimum length: 1 · maximum length: 1024

`operator`— Required

`string`

* **Constant:** `"in"`

`value`— Required

`array<string | integer | number | boolean>`

minimum items: 1 · maximum items: 100

Array items

`string | integer | number | boolean`

Any of

**Option 1: string**

`string`

maximum length: 4096

**Option 2: integer**

`integer`

minimum: -9223372036854776000 · maximum: 9223372036854776000

**Option 3: number**

`number`

**Option 4: string**

`string`

pattern: ^(?!^\[-+.]*$)[+-]?0*(?:\d&#123;0,26&#125;|(?=[\d.]&#123;1,39&#125;0*$)\d\{0,26}.\d\{0,12}0*\$)

**Option 5: boolean**

`boolean`

Additional properties are not allowed.

**Option 3: V1NullFilter**

**Schema V1NullFilter**

`object`

Properties

`field`— Required

`string`

minimum length: 1 · maximum length: 1024

`operator`— Required

`string`

* **Allowed values:** `"is_null"`,`"is_not_null"`

Additional properties are not allowed.

**Option 2: null**

`null`

`targetFilters`

`array<V1ScalarFilter | V1InFilter | V1NullFilter> | null`

Any of

**Option 1: array\<V1ScalarFilter | V1InFilter | V1NullFilter>**

`array<V1ScalarFilter | V1InFilter | V1NullFilter>`

maximum items: 32

Array items

`V1ScalarFilter | V1InFilter | V1NullFilter`

One of

Selected by `operator`.

**Option 1: V1ScalarFilter**

**Schema V1ScalarFilter**

`object`

Properties

`field`— Required

`string`

minimum length: 1 · maximum length: 1024

`operator`— Required

`string`

* **Allowed values:** `"="`,`"<>"`,`"<"`,`"<="`,`">"`,`">="`

`value`— Required

`string | integer | number | boolean`

Any of

**Option 1: string**

`string`

maximum length: 4096

**Option 2: integer**

`integer`

minimum: -9223372036854776000 · maximum: 9223372036854776000

**Option 3: number**

`number`

**Option 4: string**

`string`

pattern: ^(?!^\[-+.]*$)[+-]?0*(?:\d&#123;0,26&#125;|(?=[\d.]&#123;1,39&#125;0*$)\d\{0,26}.\d\{0,12}0*\$)

**Option 5: boolean**

`boolean`

Additional properties are not allowed.

**Option 2: V1InFilter**

**Schema V1InFilter**

`object`

Properties

`field`— Required

`string`

minimum length: 1 · maximum length: 1024

`operator`— Required

`string`

* **Constant:** `"in"`

`value`— Required

`array<string | integer | number | boolean>`

minimum items: 1 · maximum items: 100

Array items

`string | integer | number | boolean`

Any of

**Option 1: string**

`string`

maximum length: 4096

**Option 2: integer**

`integer`

minimum: -9223372036854776000 · maximum: 9223372036854776000

**Option 3: number**

`number`

**Option 4: string**

`string`

pattern: ^(?!^\[-+.]*$)[+-]?0*(?:\d&#123;0,26&#125;|(?=[\d.]&#123;1,39&#125;0*$)\d\{0,26}.\d\{0,12}0*\$)

**Option 5: boolean**

`boolean`

Additional properties are not allowed.

**Option 3: V1NullFilter**

**Schema V1NullFilter**

`object`

Properties

`field`— Required

`string`

minimum length: 1 · maximum length: 1024

`operator`— Required

`string`

* **Allowed values:** `"is_null"`,`"is_not_null"`

Additional properties are not allowed.

**Option 2: null**

`null`

Additional properties are not allowed.

Examples

Refine mutable Pair metadata · commentaryNameAndFilters

```
{
  "name": "Settled orders",
  "sourceFilters": [
    {
      "field": "status",
      "operator": "=",
      "value": "settled"
    }
  ]
}
```

## Responses

This guide summarizes response status codes and headers. Retrieve the deployed, authenticated OpenAPI document for the exact response body schemas and examples. The API also provides an authenticated Swagger UI; opening it in a browser does not automatically attach a bearer token.

Error responses use `application/problem+json`. The response's stable `code` and `type` map to the [error-code reference](/errors).

### 200

Dataset Pair updated.

#### Headers

* **ETag:** `string`

### 401

A valid Microsoft Entra bearer token is required.

### 402

The organization entitlement does not permit this mutation.

### 403

The authenticated principal does not have the required role.

### 404

The resource does not exist in this tenant.

### 409

The operation conflicts with current resource or Azure state.

### 412

If-Match did not match the resource's current strong ETag.

### 422

The request is syntactically valid but semantically invalid.

### 428

The exact current ETag is required in If-Match.

### 429

The bounded application request rate was exceeded.

#### Headers

* **Retry-After:** Seconds to wait before retrying. `integer`minimum: 1

### 503

A required dependency is temporarily unavailable.

#### Headers

* **Retry-After:** Seconds to wait before retrying. `integer`minimum: 1
