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

# Insert/Update Treatment

> APIs for inserting and updating treatments via API.

This document provides a guide and overview for the InsertTreatment and UpdateTreatment RPCs, which allow you to insert and update treatments directly via API.

## API Definitions

```url theme={null}
POST https://apis.auxia.io/v1/InsertTreatment
```

```url theme={null}
POST https://apis.auxia.io/v1/UpdateTreatment
```

## Entities

### TreatmentPb

```
message TreatmentPb {
  // Required.
  string project_id = 1;

  // Required.
  string treatment_id = 2;

  // Required.
  TreatmentTypePb treatment_type = 3;

  // Required.
  string name = 4;
  string description = 5;

  // Required.
  repeated TreatmentVersionPb versions = 6;

  // Status of the treatment.
  // Note: It's a readonly field. This value is derived from the status of the associated treatment versions.
  Status status = 7;

  enum Status {
    STATUS_UNSPECIFIED = 0;
    // If there is any version which is live and being served.
    LIVE = 1;
    // If there is only one version and that is in draft.
    DRAFT = 2;
    // If there is only one version and that is scheduled to be served in future.
    SCHEDULED = 3;
    // If the last LIVE version has crossed the end_timestamp of it's lifetime.
    ARCHIVED = 4;
    // If the treatment has been paused manually.
    PAUSED = 5;
  }

  string last_modified_by = 8;
  .google.protobuf.Timestamp last_modified_timestamp = 9;
  ModificationSource modification_source = 10;

  enum ModificationSource {
    MODIFICATION_SOURCE_UNSPECIFIED = 0;
    AUXIA_CONSOLE = 1;
    API = 2;
  }

  // Optional.
  // External Treatment Id, that is a primary key in the customer's system.
  string external_treatment_id = 11;

  // Optional.
  optional MutualExclusionGroupPb mutual_exclusion_group = 12;
}
```

### TreatmentVersionPb

```
message TreatmentVersionPb {
  // Note: It's a readonly field. Status is calculated as per the launch config details.
  Status status = 1;

  repeated TagPb tags = 2;

  .google.protobuf.Timestamp start_timestamp = 3;

  .google.protobuf.Timestamp end_timestamp = 4;

  ContentPb content = 5;

  enum Status {
    STATUS_UNSPECIFIED = 0;
    LIVE = 1;
    DRAFT = 2;
    SCHEDULED = 3;
    ARCHIVED = 4;
  }

  EligibilityRulesListPb eligibility_rules = 6;

  // Removed Surfaces associated with this treatment version.
  RemovedSurfacesListPb removed_surfaces = 7;

  TargetActionPb target_action = 8;
}
```

### TagPb

```
message TagPb {
  string name = 1;
}
```

### ContentPb

```
// Treatment content.
message ContentPb {
  repeated ContentByLanguagePb content_by_language = 1;

  repeated TreatmentContentFieldPb language_agnostic_content_fields = 2;

  message ContentByLanguagePb {
    LanguageCodePb language_code = 1;
    repeated TreatmentContentFieldPb content_fields = 2;
  }

  message TreatmentContentFieldPb {
    // Note: It has to be one of the fields from associated treatment type. Otherwise, error would be thrown.
    string field_name = 1;
    oneof field_value {
      string string_value = 2;
    }
  }

  message LanguageCodePb {
    // Note: It has to be one of the supported language codes. Otherwise, error would be thrown.
    string language_code = 1;
  }
}
```

### TargetActionPb

```
message TargetActionPb {
  int64 event_id = 1;
}
```

### EligibilityRulesPb

```
message EligibilityRulesListPb {
  repeated EligibilityRulePb rules = 1;
}
```

### MutualExclusionGroupPb

```
message MutualExclusionGroupPb {
  int64 project_id = 1;
  int64 mutual_exclusion_group_id = 2;
  string name = 3;
}

message RemovedSurfacesListPb {
  repeated SurfacePb surfaces = 1;
}
```

### TreatmentTypePb

```
// Treatment Type defines the content fields and restrictions for the treatment.
message TreatmentTypePb {
  // Project ID to which this treatment type belongs to.
  // Required.
  string project_id = 1;

  // Name of the treatment type.
  // Required.
  string name = 2;

  // Field to specify the delivery mode of this treatment type
  // Required.
  DeliveryType delivery_type = 3;

  // List of language specific content fields.
  // Required.
  repeated TreatmentContentFieldTypePb language_specific_content_field_types = 4;

  // List of language agnostic content fields. For example, cta_link, image_url.
  // Required.
  repeated TreatmentContentFieldTypePb language_agnostic_content_field_types = 5;

  // List of surfaces where this treatment type can be displayed.
  repeated SurfacePb surfaces = 6;
}

message SurfacePb {
  // Required.
  string name = 1;
}

message TreatmentContentFieldTypePb {
  // Name of the content field.
  // Required.
  string field_name = 1;

  // Allowed length of the content field.
  // Required.
  int32 value_length_limit = 2;

  // Data type of the content field.
  // Required.
  ContentFieldDataType data_type = 3;
}

enum ContentFieldDataType {
  CONTENT_FIELD_DATA_TYPE_UNSPECIFIED = 0;
  STRING = 1;
}

enum DeliveryType {
  DELIVERY_TYPE_UNSPECIFIED = 0;
  EMAIL = 1;
  IN_APP = 2;
  NOTIFICATION = 3;
  WEBHOOK = 4;
}
```

### EligibilityRulePb

```
message EligibilityRulePb {
  // Required (unless treatment_data_field is set).
  int64 data_field_id = 1;

  // Required.
  Condition condition = 2;

  // Required.
  string rhs_value = 3;

  // Optional. Behaviour when the data field is missing for rule evaluation.
  // If unset, defaults to EVALUATE_TO_INELIGIBLE (conservative).
  optional EligibilityRuleDataMissingBehaviour data_missing_behaviour = 5;
}

enum EligibilityRuleDataMissingBehaviour {
  ELIGIBILITY_RULE_DATA_MISSING_BEHAVIOUR_UNSPECIFIED = 0;
  EVALUATE_TO_ELIGIBLE = 1;
  EVALUATE_TO_INELIGIBLE = 2;
}

enum Condition {
  UNSPECIFIED_CONDITION = 0;
  LESS_THAN = 1;
  LESS_THAN_OR_EQUALS = 2;
  GREATER_THAN = 3;
  GREATER_THAN_OR_EQUALS = 4;
  EQUALS = 5;
  NOT_EQUALS = 6;
  IS_AFTER_CURRENT_TIMESTAMP_MINUS = 7;
  IS_BEFORE_CURRENT_TIMESTAMP_MINUS = 8;
  CONTAINS = 9;
  ANY_OF = 10;
  DOES_NOT_CONTAIN = 11;
  NOT_ANY_OF = 12;
  CONTAINS_ANY_OF = 13;
  DOES_NOT_CONTAIN_ANY_OF = 14;
}
```

## InsertTreatment

### API to create a new treatment

```
message InsertTreatmentRequest {
  // Required.
  string project_id = 1;

  // Required.
  // Metadata of the treatment.
  string name = 2;

  // Required.
  string description = 3;

  // Optional.
  optional TargetActionPb target_action = 15;

  // Required.
  string treatment_type_name = 4;

  // Optional.
  // Surfaces which should be ineligible for the treatment.
  // Values in removed_surfaces must exactly match surface names.
  optional RemovedSurfacesListPb removed_surfaces = 14;

  // Required.
  string last_modified_by = 5;

  // Required.
  // Details related to treatment launch like start time and end time of the treatment.
  // Start time of the treatment.
  .google.protobuf.Timestamp start_timestamp = 6;

  // Optional.
  // End time of the treatment. If this field is unset, treatment will never end.
  .google.protobuf.Timestamp end_timestamp = 7;

  // Required.
  // Content of the treatment.
  ContentPb content = 8;

  // Optional.
  // Tags to be linked to this treatment.
  repeated TagPb tags = 9;

  // Optional.
  // External Treatment Id, that is a primary key in the customer's system.
  optional string external_treatment_id =  10;

  // Optional.
  // If true, it publishes the treatments.
  optional bool should_publish = 11;

  // Optional.
  optional EligibilityRulesListPb eligibility_rules = 12;

  // Optional.
  optional string mutual_exclusion_group = 13;
}

message InsertTreatmentResponse {
  TreatmentPb treatment = 1;
}
```

### Sample cURL Request

```
curl --location --request POST 'https://apis.auxia.io/v1/InsertTreatment' \
--header 'Content-Type: application/json' \
--header 'x-api-key: TEST_API_KEY' \
--data-raw '{
  "projectId": "PROJECT_ID",
  "name": "CCB treatment",
  "description": "Treatment to promote books category",
  "treatmentTypeName": "IN_APP_CONTENT",
  "lastModifiedBy": "USER_EMAIL",
  "startTimestamp": "2017-01-15T01:30:15.010Z",
  "endTimestamp": "9999-12-10T23:59:59.999Z",
  "content": {
    "contentByLanguage": [
      {
        "languageCode": {
          "languageCode": "en"
        },
        "contentFields": [
          {
            "fieldName": "title",
            "stringValue": "50% off"
          }
        ]
      }
    ],
    "languageAgnosticContentFields": []
  },
  "tags": [
    {
      "name": "christmas_coupons"
    }
  ],
  "externalTreatmentId": "EXTERNAL_TREATMENT_ID",
  "shouldPublish": true,
  "targetAction": {
    "eventId": 123 
  },
  "eligibilityRules": {
    "rules": [
      {
        "dataFieldId": 1,
        "condition": "GREATER_THAN",
        "rhsValue": "18"
      },
      {
        "dataFieldId": 2,
        "condition": "EQUALS",
        "rhsValue": "US"
      }
    ]
  },
  "mutualExclusionGroup": "MUTUAL_EXCLUSION_GROUP",
  "removedSurfaces": {
    "surfaces": [
      {
        "name": "SURFACE"
      }
    ]
  }
}'
```

### Sample Response

```
{
  "treatment": {
    "projectId": "PROJECT_ID",
    "treatmentId": "TREATMENT_ID",
    "treatmentType": {
      "projectId": "PROJECT_ID",
      "name": "IN_APP_CONTENT_CARD",
      "deliveryType": "IN_APP",
      "languageSpecificContentFieldTypes": [
        {
          "fieldName": "title",
          "valueLengthLimit": 50,
          "dataType": "STRING"
        },
        {
          "fieldName": "cta_name",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        },
        {
          "fieldName": "body",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        }
      ],
      "languageAgnosticContentFieldTypes": [
        {
          "fieldName": "cta_link",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        },
        {
          "fieldName": "image_link",
          "valueLengthLimit": 200,
          "dataType": "STRING"
        }
      ],
      "surfaces": [
        {
          "name": "SURFACE"
        }
      ]
    },
    "name": "Coupon treatment",
    "description": "Coupons for Christmas",
    "versions": [
      {
        "status": "LIVE",
        "tags": [
          {
            "name": "christmas_coupons"
          }
        ],
        "startTimestamp": "2017-01-15T01:30:15.010Z",
        "endTimestamp": "9999-12-10T23:59:59.999Z",
        "content": {
          "contentByLanguage": [
            {
              "languageCode": {
                "languageCode": "en"
              },
              "contentFields": [
                {
                  "fieldName": "title",
                  "stringValue": "50% off"
                }
              ]
            }
          ]
        },
        "eligibilityRules": {
          "rules": [
            {
              "dataFieldId": "1",
              "condition": "GREATER_THAN",
              "rhsValue": "18"
            },
            {
              "dataFieldId": "2",
              "condition": "EQUALS",
              "rhsValue": "US"
            }
          ]
        },
        "removedSurfaces": {
          "surfaces": [
            {
              "name": "SURFACE"
            }
          ]
        },
        "targetAction": {
          "eventId": "123"
        }
      }
    ],
    "status": "LIVE",
    "externalTreatmentId": "EXTERNAL_TREATMENT_ID",
    "lastModifiedBy": "USER_EMAIL",
    "lastModifiedTimestamp": "2025-05-30T11:32:44.279Z",
    "modificationSource": "API",
    "mutualExclusionGroup": {
      "projectId": "PROJECT_ID",
      "mutualExclusionGroupId": "62",
      "name": "MUTUAL_EXCLUSION_GROUP"
    }
  }
}
```

## UpdateTreatment

### API to update an existing treatment.

```
message UpdateTreatmentRequest {
  // Required.
  string project_id = 1;

  // Required.
  string treatment_id = 2;

  // Optional.
  optional string name = 3;

  // Optional.
  optional string description = 4;

  // Optional.
  optional TargetActionPb target_action = 15;

  // Optional.
  // Specifies surfaces that should be ineligible for the treatment.
  // Values in removed_surfaces must exactly match surface names.
  optional RemovedSurfacesListPb removed_surfaces = 14;

  // Required.
  string last_modified_by = 5;

  // Optional.
  .google.protobuf.Timestamp start_timestamp = 6;

  // Optional.
  .google.protobuf.Timestamp end_timestamp = 7;

  // Optional.
  // Content of the treatment.
  optional ContentPb content = 8;

  // Optional.
  // Tags to be linked to this treatment.
  // Note: Sending an empty list of tags would overwrite and clear all tags from this treatment.
  repeated .io.auxia.decision.model.TagPb tags = 9;

  // Optional.
  // Either treatment_id or external_treatment_id are required.
  // External Treatment Id, that is a primary key in the customer's system.
  optional string external_treatment_id = 10;

  // Optional.
  // If true, it publishes the treatments.
  optional bool should_publish = 11;

  // Optional.
  // Note: If eligibility_rules is unset, the existing rules remain unchanged.
  // If set (even as an empty list), it replaces any previously stored rules for this treatment.
  optional EligibilityRulesListPb eligibility_rules = 12;

  // Optional.
  // Note: Sending an empty string would overwrite and clear mutual_exclusion_group
  // from this treatment.
  optional string mutual_exclusion_group = 13;
  
  // Optional
  // Note : Don't set any fields other than project_id, treatment_id, external_treatment_id and last_modified_by
  // when deleting treatments
  optional bool should_delete = 16;

  // Optional
  // Note: This applies only to live treatments. When set to true, treatments are paused
  // For pause operations, only the required fields (project_id, external_treatment_id, treatment_id, last_modified_by) should be provided, otherwise the API will return a validation error.
  optional bool should_pause = 17;
}

message UpdateTreatmentResponse {
  TreatmentPb treatment = 1;
}
```

### Sample cURL Request

```
curl --location --request POST 'https://apis.auxia.io/v1/UpdateTreatment' \
--header 'Content-Type: application/json' \
--header 'x-api-key: TEST_API_KEY' \
--data-raw '{
  "projectId": "PROJECT_ID",
  "treatmentId": "TREATMENT_ID",
  "lastModifiedBy": "USER_EMAIL",
  "name": "Coupon treatment",
  "description": "Coupons for Christmas",
  "tags": [
    {
      "name": "christmas_coupons"
    }
  ],
  "content": {
    "contentByLanguage": [
      {
        "languageCode": {
          "languageCode": "en"
        },
        "contentFields": [
          {
            "fieldName": "title",
            "stringValue": "50% off"
          }
        ]
      }
    ],
    "languageAgnosticContentFields": [
      {
        "fieldName": "cta_link",
        "stringValue": "http://cta_link"
      }
    ]
  },
  "targetAction": {
    "eventId": 123 
  },
  "eligibilityRules": {
    "rules": [
      {
        "dataFieldId": 1,
        "condition": "GREATER_THAN",
        "rhsValue": "18"
      },
      {
        "dataFieldId": 2,
        "condition": "EQUALS",
        "rhsValue": "US"
      }
    ]
  },
  "mutualExclusionGroup": "MUTUAL_EXCLUSION_GROUP",
  "removedSurfaces": {
    "surfaces": [
      {
        "name": "SURFACE"
      }
    ]
  }
}'
```

### Sample Response

```
{
  "treatment": {
    "projectId": "PROJECT_ID",
    "treatmentId": "TREATMENT_ID",
    "treatmentType": {
      "projectId": "PROJECT_ID",
      "name": "IN_APP_CONTENT_CARD",
      "deliveryType": "IN_APP",
      "languageSpecificContentFieldTypes": [
        {
          "fieldName": "title",
          "valueLengthLimit": 50,
          "dataType": "STRING"
        },
        {
          "fieldName": "cta_name",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        },
        {
          "fieldName": "body",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        }
      ],
      "languageAgnosticContentFieldTypes": [
        {
          "fieldName": "cta_link",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        },
        {
          "fieldName": "image_link",
          "valueLengthLimit": 200,
          "dataType": "STRING"
        }
      ],
      "surfaces": [
        {
          "name": "SURFACE"
        }
      ]
    },
    "name": "Coupon treatment",
    "description": "Coupons for Christmas",
    "versions": [
      {
        "status": "DRAFT",
        "tags": [
          {
            "name": "christmas_coupons"
          }
        ],
        "startTimestamp": "2017-01-15T01:30:15.010Z",
        "endTimestamp": "9999-12-10T23:59:59.999Z",
        "content": {
          "contentByLanguage": [
            {
              "languageCode": {
                "languageCode": "en"
              },
              "contentFields": [
                {
                  "fieldName": "title",
                  "stringValue": "50% off"
                }
              ]
            }
          ],
          "languageAgnosticContentFields": [
            {
              "fieldName": "cta_link",
              "stringValue": "http://cta_link"
            }
          ]
        },
        "eligibilityRules": {
          "rules": [
            {
              "dataFieldId": "1",
              "condition": "GREATER_THAN",
              "rhsValue": "18"
            },
            {
              "dataFieldId": "2",
              "condition": "EQUALS",
              "rhsValue": "US"
            }
          ]
        },
        "removedSurfaces": {
          "surfaces": [
            {
              "name": "SURFACE"
            }
          ]
        },
        "targetAction": {
          "eventId": "123"
        }
      }
    ],
    "status": "DRAFT",
    "externalTreatmentId": "EXTERNAL_TREATMENT_ID",
    "lastModifiedBy": "USER_EMAIL",
    "lastModifiedTimestamp": "2025-05-30T11:32:44.279Z",
    "modificationSource": "API",
    "mutualExclusionGroup": {
      "projectId": "PROJECT_ID",
      "mutualExclusionGroupId": "1",
      "name": "MUTUAL_EXCLUSION_GROUP"
    }
  }
}
```

### API to delete an existing treatment.

<Tip>
  Don't set any fields other than project\_id, treatment\_id, external\_treatment\_id and last\_modified\_by
  when deleting treatments
</Tip>

### Sample cURL Request

```
curl --location --request POST 'https://apis.auxia.io/v1/UpdateTreatment' \
--header 'Content-Type: application/json' \
--header 'x-api-key: TEST_API_KEY' \
--data-raw '{
  "projectId": "PROJECT_ID",
  "treatmentId": "TREATMENT_ID",
  "lastModifiedBy": "USER_EMAIL",
  "shouldDelete": true
}'
```

### Sample Response

```
{
  "treatment": {
    "projectId": "PROJECT_ID",
    "treatmentId": "TREATMENT_ID",
    "treatmentType": {
      "projectId": "PROJECT_ID",
      "name": "IN_APP_CONTENT_CARD",
      "deliveryType": "IN_APP",
      "languageSpecificContentFieldTypes": [
        {
          "fieldName": "title",
          "valueLengthLimit": 50,
          "dataType": "STRING"
        },
        {
          "fieldName": "cta_name",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        },
        {
          "fieldName": "body",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        }
      ],
      "languageAgnosticContentFieldTypes": [
        {
          "fieldName": "cta_link",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        },
        {
          "fieldName": "image_link",
          "valueLengthLimit": 200,
          "dataType": "STRING"
        }
      ],
      "surfaces": [
        {
          "name": "SURFACE"
        }
      ]
    },
    "name": "Coupon treatment",
    "description": "Coupons for Christmas",
    "versions": [
      {
        "status": "ARCHIVED",
        "tags": [
          {
            "name": "christmas_coupons"
          }
        ],
        "startTimestamp": "2017-01-15T01:30:15.010Z",
        "endTimestamp": "2025-01-15T01:30:15.010Z",
        "content": {
          "contentByLanguage": [
            {
              "languageCode": {
                "languageCode": "en"
              },
              "contentFields": [
                {
                  "fieldName": "title",
                  "stringValue": "50% off"
                }
              ]
            }
          ]
        },
        "eligibilityRules": {
          "rules": [
            {
              "dataFieldId": "1",
              "condition": "GREATER_THAN",
              "rhsValue": "18"
            },
            {
              "dataFieldId": "2",
              "condition": "EQUALS",
              "rhsValue": "US"
            }
          ]
        },
        "removedSurfaces": {
          "surfaces": [
            {
              "name": "SURFACE"
            }
          ]
        },
        "targetAction": {
          "eventId": "123"
        }
      }
    ],
    "status": "ARCHIVED",
    "externalTreatmentId": "EXTERNAL_TREATMENT_ID",
    "lastModifiedBy": "USER_EMAIL",
    "lastModifiedTimestamp": "2025-05-30T11:32:44.279Z",
    "modificationSource": "API",
    "mutualExclusionGroup": {
      "projectId": "PROJECT_ID",
      "mutualExclusionGroupId": "62",
      "name": "MUTUAL_EXCLUSION_GROUP"
    }
  }
}
```

### API to pause an existing treatment.

<Tip>
  Don't set any fields other than project\_id, treatment\_id, external\_treatment\_id, last\_modified\_by, and should\_pause
  when pausing treatments
</Tip>

### Sample cURL Request

```
curl --location --request POST 'https://apis.auxia.io/v1/UpdateTreatment' \
--header 'Content-Type: application/json' \
--header 'x-api-key: TEST_API_KEY' \
--data-raw '{
  "projectId": "PROJECT_ID",
  "treatmentId": "TREATMENT_ID",
  "lastModifiedBy": "USER_EMAIL",
  "shouldPause": true
}'
```

### Sample Response

```
{
  "treatment": {
    "projectId": "PROJECT_ID",
    "treatmentId": "TREATMENT_ID",
    "treatmentType": {
      "projectId": "PROJECT_ID",
      "name": "IN_APP_CONTENT_CARD",
      "deliveryType": "IN_APP",
      "languageSpecificContentFieldTypes": [
        {
          "fieldName": "title",
          "valueLengthLimit": 50,
          "dataType": "STRING"
        },
        {
          "fieldName": "cta_name",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        },
        {
          "fieldName": "body",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        }
      ],
      "languageAgnosticContentFieldTypes": [
        {
          "fieldName": "cta_link",
          "valueLengthLimit": 100,
          "dataType": "STRING"
        },
        {
          "fieldName": "image_link",
          "valueLengthLimit": 200,
          "dataType": "STRING"
        }
      ],
      "surfaces": [
        {
          "name": "SURFACE"
        }
      ]
    },
    "name": "Coupon treatment",
    "description": "Coupons for Christmas",
    "versions": [
      {
        "status": "LIVE",
        "tags": [
          {
            "name": "christmas_coupons"
          }
        ],
        "startTimestamp": "2017-01-15T01:30:15.010Z",
        "endTimestamp": "9999-12-10T23:59:59.999Z",
        "content": {
          "contentByLanguage": [
            {
              "languageCode": {
                "languageCode": "en"
              },
              "contentFields": [
                {
                  "fieldName": "title",
                  "stringValue": "50% off"
                }
              ]
            }
          ]
        },
        "eligibilityRules": {
          "rules": [
            {
              "dataFieldId": "1",
              "condition": "GREATER_THAN",
              "rhsValue": "18"
            },
            {
              "dataFieldId": "2",
              "condition": "EQUALS",
              "rhsValue": "US"
            }
          ]
        },
        "removedSurfaces": {
          "surfaces": [
            {
              "name": "SURFACE"
            }
          ]
        },
        "targetAction": {
          "eventId": "123"
        }
      }
    ],
    "status": "PAUSED",
    "externalTreatmentId": "EXTERNAL_TREATMENT_ID",
    "lastModifiedBy": "USER_EMAIL",
    "lastModifiedTimestamp": "2025-05-30T11:32:44.279Z",
    "modificationSource": "API",
    "mutualExclusionGroup": {
      "projectId": "PROJECT_ID",
      "mutualExclusionGroupId": "62",
      "name": "MUTUAL_EXCLUSION_GROUP"
    }
  }
}
```
