# Create or update a dynamic WoT validation config section

`PUT /devops/wot/config/dynamicConfigs/{scopeId}`

Authentication (security requirement alternatives):

```json
[
  {
    "DevOpsBasic": []
  },
  {
    "DevOpsBearer": []
  }
]
```

- DevOpsBasic: http (basic). Eclipse Ditto devops user (devops) + password (foobar)
- DevOpsBearer: http (bearer). A JSON Web Token issued by a supported OAuth 2.0 Identity Provider for the Eclipse Ditto devops user.

Parameters:

- `scopeId` (path, string, required)
  Type: string

Request body: application/json

Type: DynamicValidationConfig

Dynamic config section for request/response.

Schema: [DynamicValidationConfig](https://sourcey-ditto.pages.dev/http-api-doc/models/dynamicvalidationconfig.md)

- `scope-id` (required)
  Type: string

- `validation-context` (required)
  Reference: [ValidationContext](https://sourcey-ditto.pages.dev/http-api-doc/models/validationcontext.md); Type: ValidationContext
  
  Validation context for dynamic config section.

- `config-overrides` (required)
  Reference: [ConfigOverrides](https://sourcey-ditto.pages.dev/http-api-doc/models/configoverrides.md); Type: ConfigOverrides
  
  Config overrides for a dynamic config section.

Responses:

- 204: Updated dynamic config section

## Examples

### cURL

```bash
curl -X PUT 'https://ditto.eclipseprojects.io/devops/wot/config/dynamicConfigs/string' \
  -H 'Authorization: Basic WU9VUl9VU0VSTkFNRTpZT1VSX1BBU1NXT1JE' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "scope-id": "string",
  "validation-context": {
    "ditto-headers-patterns": [
      {}
    ],
    "thing-definition-patterns": [
      "string"
    ],
    "feature-definition-patterns": [
      "string"
    ],
    "scope-id": "string"
  },
  "config-overrides": {
    "enabled": true,
    "log-warning-instead-of-failing-api-calls": true,
    "thing": {
      "enforce": {
        "enforce-thing-description-modification": true,
        "attributes": true,
        "inbox-messages-input": true,
        "inbox-messages-output": true,
        "outbox-messages": true
      },
      "forbid": {
        "thing-description-deletion": true,
        "non-modeled-attributes": true,
        "non-modeled-inbox-messages": true,
        "non-modeled-outbox-messages": true
      }
    },
    "feature": {
      "enforce": {
        "featureDescriptionModification": true,
        "presenceOfModeledFeatures": true,
        "properties": true,
        "desiredProperties": true,
        "inbox-messages-input": true,
        "inbox-messages-output": true,
        "outbox-messages": true
      },
      "forbid": {
        "featureDescriptionDeletion": true,
        "nonModeledFeatures": true,
        "nonModeledProperties": true,
        "nonModeledDesiredProperties": true,
        "non-modeled-inbox-messages": true,
        "non-modeled-outbox-messages": true
      }
    }
  }
}'
```

### JavaScript

```javascript
const body = `{
  "scope-id": "string",
  "validation-context": {
    "ditto-headers-patterns": [
      {}
    ],
    "thing-definition-patterns": [
      "string"
    ],
    "feature-definition-patterns": [
      "string"
    ],
    "scope-id": "string"
  },
  "config-overrides": {
    "enabled": true,
    "log-warning-instead-of-failing-api-calls": true,
    "thing": {
      "enforce": {
        "enforce-thing-description-modification": true,
        "attributes": true,
        "inbox-messages-input": true,
        "inbox-messages-output": true,
        "outbox-messages": true
      },
      "forbid": {
        "thing-description-deletion": true,
        "non-modeled-attributes": true,
        "non-modeled-inbox-messages": true,
        "non-modeled-outbox-messages": true
      }
    },
    "feature": {
      "enforce": {
        "featureDescriptionModification": true,
        "presenceOfModeledFeatures": true,
        "properties": true,
        "desiredProperties": true,
        "inbox-messages-input": true,
        "inbox-messages-output": true,
        "outbox-messages": true
      },
      "forbid": {
        "featureDescriptionDeletion": true,
        "nonModeledFeatures": true,
        "nonModeledProperties": true,
        "nonModeledDesiredProperties": true,
        "non-modeled-inbox-messages": true,
        "non-modeled-outbox-messages": true
      }
    }
  }
}`;

const response = await fetch('https://ditto.eclipseprojects.io/devops/wot/config/dynamicConfigs/string', {
  method: 'PUT',
  headers: {
    'Authorization': 'Basic WU9VUl9VU0VSTkFNRTpZT1VSX1BBU1NXT1JE',
    'Content-Type': 'application/json',
  },
  body,
});

const data = await response.text();
```

### Python

```python
import requests

body = '''{
  "scope-id": "string",
  "validation-context": {
    "ditto-headers-patterns": [
      {}
    ],
    "thing-definition-patterns": [
      "string"
    ],
    "feature-definition-patterns": [
      "string"
    ],
    "scope-id": "string"
  },
  "config-overrides": {
    "enabled": true,
    "log-warning-instead-of-failing-api-calls": true,
    "thing": {
      "enforce": {
        "enforce-thing-description-modification": true,
        "attributes": true,
        "inbox-messages-input": true,
        "inbox-messages-output": true,
        "outbox-messages": true
      },
      "forbid": {
        "thing-description-deletion": true,
        "non-modeled-attributes": true,
        "non-modeled-inbox-messages": true,
        "non-modeled-outbox-messages": true
      }
    },
    "feature": {
      "enforce": {
        "featureDescriptionModification": true,
        "presenceOfModeledFeatures": true,
        "properties": true,
        "desiredProperties": true,
        "inbox-messages-input": true,
        "inbox-messages-output": true,
        "outbox-messages": true
      },
      "forbid": {
        "featureDescriptionDeletion": true,
        "nonModeledFeatures": true,
        "nonModeledProperties": true,
        "nonModeledDesiredProperties": true,
        "non-modeled-inbox-messages": true,
        "non-modeled-outbox-messages": true
      }
    }
  }
}'''

response = requests.put(
    'https://ditto.eclipseprojects.io/devops/wot/config/dynamicConfigs/string',
    data=body.encode('utf-8'),
    headers={
        'Authorization': 'Basic WU9VUl9VU0VSTkFNRTpZT1VSX1BBU1NXT1JE',
        'Content-Type': 'application/json',
    },
)
print(response.text)
```
