> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ediphai.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ediphai.com/_mcp/server.

# Put Definition

PUT https://apps.ediphai.com/v1/definitions/{key}/versions/{version}
Content-Type: application/json

Reference: https://docs.ediphai.com/api/v1/reference/put-definition

## Authentication

- `Authorization` header (bearer token, required) — ediphai_test_... or ediphai_live_...

## Request

### Path parameters

- `key` (string, required)
- `version` (string, required)

### Body (application/json)

This endpoint expects a Definition.

- `kind` (enum, required)
  - Allowed values: `assessment`
- `name` (string, required)
- `roles` (list of DefinitionRolesItems, required)
- `sections` (list of DefinitionSectionsItems, required)
- `items` (list of DefinitionItemsItems, required)
- `key` (string, optional) — A key. Platform definitions prefix their declarer's namespace (rock.disc); church keys never contain a dot
- `declarer` (string, optional) — The declaring source, or a platform namespace such as rock
- `scope` (enum, optional) — church unless a platform seed declares global
  - Allowed values: `church`, `global`
- `supersedes` (string, optional, nullable)
- `respondents` (list of DefinitionRespondentsItems, optional) — Who may answer; self only when not declared
- `reading` (DefinitionReading, optional)

## Response

### 200

Unchanged: this version was already stored with the same definition

- `key` (string, required)
- `version` (string, required)
- `declarer` (string, required) — The source that declared it; the key is namespaced by it
- `scope` ("church", required)
- `env` (enum, required)
  - Allowed values: `test`, `live`
- `status` (string, required) — applied: in use at once, in the environment of the key that sent it
- `supersedes` (string, required, nullable)
- `line` (string, required) — The version that started the compatible line this version joins
- `compatible` (boolean, required, nullable) — Whether it is compatible with the version it supersedes; null when it supersedes none. false starts a new line
- `reasons` (list of string, required) — Why it is not compatible, one line each
- `hash` (string, required) — sha256 of the canonical definition; an identical re-PUT answers 200 with this receipt

### 201

Stored and applied, on a test or a live key

- `key` (string, required)
- `version` (string, required)
- `declarer` (string, required) — The source that declared it; the key is namespaced by it
- `scope` ("church", required)
- `env` (enum, required)
  - Allowed values: `test`, `live`
- `status` (string, required) — applied: in use at once, in the environment of the key that sent it
- `supersedes` (string, required, nullable)
- `line` (string, required) — The version that started the compatible line this version joins
- `compatible` (boolean, required, nullable) — Whether it is compatible with the version it supersedes; null when it supersedes none. false starts a new line
- `reasons` (list of string, required) — Why it is not compatible, one line each
- `hash` (string, required) — sha256 of the canonical definition; an identical re-PUT answers 200 with this receipt

## Errors

### 400 Client Request Error

Refused: read rule, pointer, fix and retryable

- `type` (string, required)
- `title` (string, required)
- `status` (integer, required)
- `pointer` (string, required) — JSON Pointer into the request; '' when the whole request is at fault
- `rule` (string, required) — A rule from the catalogue in the docs; new rules may be added
- `fix` (string, required)
- `retryable` (boolean, required) — true: send the same request again later. false: change the request first
- `detail` (string, optional)
- `retry_after_ms` (integer, optional)
- `errors` (list of ProblemErrorsItems, optional)

### 500 Server Error

Refused: read rule, pointer, fix and retryable

- `type` (string, required)
- `title` (string, required)
- `status` (integer, required)
- `pointer` (string, required) — JSON Pointer into the request; '' when the whole request is at fault
- `rule` (string, required) — A rule from the catalogue in the docs; new rules may be added
- `fix` (string, required)
- `retryable` (boolean, required) — true: send the same request again later. false: change the request first
- `detail` (string, optional)
- `retry_after_ms` (integer, optional)
- `errors` (list of ProblemErrorsItems, optional)

## Types

### DefinitionRolesItems

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `min` (integer, required)
- `max` (integer, required)

### DefinitionSectionsItems

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `label` (string, required)
- `order` (integer, required)
- `sensitivity` (enum, optional)
  - Allowed values: `standard`, `restricted`
- `sensitivity_categories` (list of enum, optional) — Why the data is sensitive. Inherited from section to item; defaults to formation for assessments. Enforces nothing
  - Allowed values: `identity`, `contact`, `demographic`, `financial`, `health`, `pastoral`, `safety`, `formation`, `engagement`, `none`, `unclassified`

### DefinitionItemsItems

- DefinitionItemsItems0
- DefinitionItemsItems1
- DefinitionItemsItems2
- DefinitionItemsItems3
- DefinitionItemsItems4
- DefinitionItemsItems5
- DefinitionItemsItems6

### DefinitionRespondentsItems

- DefinitionRespondentsItems0
- DefinitionRespondentsItems1

### DefinitionReading

- `primary` (enum, required)
  - Allowed values: `source_primary`, `none`
- `order_by` (enum, required)
  - Allowed values: `source_rank`, `value`, `none`

### ProblemErrorsItems

- `pointer` (string, required)
- `rule` (string, required)
- `fix` (string, required)

### DefinitionItemsItems0

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `section` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `label` (string, required)
- `value_type` ("score", required)
- `scale` (DefinitionItemsItemsOneOf0Scale, required)
- `description` (string, optional)
- `sensitivity` (enum, optional)
  - Allowed values: `standard`, `restricted`
- `sensitivity_categories` (list of enum, optional) — Why the data is sensitive. Inherited from section to item; defaults to formation for assessments. Enforces nothing
  - Allowed values: `identity`, `contact`, `demographic`, `financial`, `health`, `pastoral`, `safety`, `formation`, `engagement`, `none`, `unclassified`
- `qualifiers` (list of DefinitionItemsItemsOneOf0QualifiersItems, optional)
- `reverse_keyed` (boolean, optional)

### DefinitionItemsItems1

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `section` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `label` (string, required)
- `value_type` ("ordinal", required)
- `levels` (list of DefinitionItemsItemsOneOf1LevelsItems, required) — Ordered, lowest first
- `description` (string, optional)
- `sensitivity` (enum, optional)
  - Allowed values: `standard`, `restricted`
- `sensitivity_categories` (list of enum, optional) — Why the data is sensitive. Inherited from section to item; defaults to formation for assessments. Enforces nothing
  - Allowed values: `identity`, `contact`, `demographic`, `financial`, `health`, `pastoral`, `safety`, `formation`, `engagement`, `none`, `unclassified`
- `qualifiers` (list of DefinitionItemsItemsOneOf1QualifiersItems, optional)
- `reverse_keyed` (boolean, optional)

### DefinitionItemsItems2

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `section` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `label` (string, required)
- `value_type` ("rank", required)
- `rank` (DefinitionItemsItemsOneOf2Rank, required)
- `description` (string, optional)
- `sensitivity` (enum, optional)
  - Allowed values: `standard`, `restricted`
- `sensitivity_categories` (list of enum, optional) — Why the data is sensitive. Inherited from section to item; defaults to formation for assessments. Enforces nothing
  - Allowed values: `identity`, `contact`, `demographic`, `financial`, `health`, `pastoral`, `safety`, `formation`, `engagement`, `none`, `unclassified`
- `qualifiers` (list of DefinitionItemsItemsOneOf2QualifiersItems, optional)
- `reverse_keyed` (boolean, optional)

### DefinitionItemsItems3

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `section` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `label` (string, required)
- `value_type` ("category", required)
- `categories` (list of string, required)
- `description` (string, optional)
- `sensitivity` (enum, optional)
  - Allowed values: `standard`, `restricted`
- `sensitivity_categories` (list of enum, optional) — Why the data is sensitive. Inherited from section to item; defaults to formation for assessments. Enforces nothing
  - Allowed values: `identity`, `contact`, `demographic`, `financial`, `health`, `pastoral`, `safety`, `formation`, `engagement`, `none`, `unclassified`
- `qualifiers` (list of DefinitionItemsItemsOneOf3QualifiersItems, optional)
- `reverse_keyed` (boolean, optional)

### DefinitionItemsItems4

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `section` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `label` (string, required)
- `value_type` ("ordered_list", required)
- `categories` (list of string, required)
- `description` (string, optional)
- `sensitivity` (enum, optional)
  - Allowed values: `standard`, `restricted`
- `sensitivity_categories` (list of enum, optional) — Why the data is sensitive. Inherited from section to item; defaults to formation for assessments. Enforces nothing
  - Allowed values: `identity`, `contact`, `demographic`, `financial`, `health`, `pastoral`, `safety`, `formation`, `engagement`, `none`, `unclassified`
- `qualifiers` (list of DefinitionItemsItemsOneOf4QualifiersItems, optional)
- `reverse_keyed` (boolean, optional)
- `min_items` (integer, optional)
- `max_items` (integer, optional)
- `unique` (boolean, optional) — Values are distinct unless this is false

### DefinitionItemsItems5

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `section` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `label` (string, required)
- `value_type` ("selected", required)
- `description` (string, optional)
- `sensitivity` (enum, optional)
  - Allowed values: `standard`, `restricted`
- `sensitivity_categories` (list of enum, optional) — Why the data is sensitive. Inherited from section to item; defaults to formation for assessments. Enforces nothing
  - Allowed values: `identity`, `contact`, `demographic`, `financial`, `health`, `pastoral`, `safety`, `formation`, `engagement`, `none`, `unclassified`
- `qualifiers` (list of DefinitionItemsItemsOneOf5QualifiersItems, optional)
- `reverse_keyed` (boolean, optional)

### DefinitionItemsItems6

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `section` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `label` (string, required)
- `value_type` ("text", required)
- `description` (string, optional)
- `sensitivity` (enum, optional)
  - Allowed values: `standard`, `restricted`
- `sensitivity_categories` (list of enum, optional) — Why the data is sensitive. Inherited from section to item; defaults to formation for assessments. Enforces nothing
  - Allowed values: `identity`, `contact`, `demographic`, `financial`, `health`, `pastoral`, `safety`, `formation`, `engagement`, `none`, `unclassified`
- `qualifiers` (list of DefinitionItemsItemsOneOf6QualifiersItems, optional)
- `reverse_keyed` (boolean, optional)
- `max_length` (integer, optional) — Characters; 10,000 when not declared

### DefinitionRespondentsItems0

- `kind` ("self", required)

### DefinitionRespondentsItems1

- `kind` ("observer", required)
- `role` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `min_count` (integer, required)

### DefinitionItemsItemsOneOf0Scale

- `min` (double, required)
- `max` (double, required)
- `step` (double, optional)
- `higher_means` (string, optional)

### DefinitionItemsItemsOneOf0QualifiersItems

- DefinitionItemsItemsOneOf0QualifiersItems0
- DefinitionItemsItemsOneOf0QualifiersItems1

### DefinitionItemsItemsOneOf1LevelsItems

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `label` (string, required)

### DefinitionItemsItemsOneOf1QualifiersItems

- DefinitionItemsItemsOneOf1QualifiersItems0
- DefinitionItemsItemsOneOf1QualifiersItems1

### DefinitionItemsItemsOneOf2Rank

- `total` (integer, required)
- `direction` (enum, required)
  - Allowed values: `one_is_strongest`, `total_is_strongest`

### DefinitionItemsItemsOneOf2QualifiersItems

- DefinitionItemsItemsOneOf2QualifiersItems0
- DefinitionItemsItemsOneOf2QualifiersItems1

### DefinitionItemsItemsOneOf3QualifiersItems

- DefinitionItemsItemsOneOf3QualifiersItems0
- DefinitionItemsItemsOneOf3QualifiersItems1

### DefinitionItemsItemsOneOf4QualifiersItems

- DefinitionItemsItemsOneOf4QualifiersItems0
- DefinitionItemsItemsOneOf4QualifiersItems1

### DefinitionItemsItemsOneOf5QualifiersItems

- DefinitionItemsItemsOneOf5QualifiersItems0
- DefinitionItemsItemsOneOf5QualifiersItems1

### DefinitionItemsItemsOneOf6QualifiersItems

- DefinitionItemsItemsOneOf6QualifiersItems0
- DefinitionItemsItemsOneOf6QualifiersItems1

### DefinitionItemsItemsOneOf0QualifiersItems0

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("category", required)
- `categories` (list of string, required)

### DefinitionItemsItemsOneOf0QualifiersItems1

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("number", required)
- `min` (double, optional)
- `max` (double, optional)

### DefinitionItemsItemsOneOf1QualifiersItems0

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("category", required)
- `categories` (list of string, required)

### DefinitionItemsItemsOneOf1QualifiersItems1

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("number", required)
- `min` (double, optional)
- `max` (double, optional)

### DefinitionItemsItemsOneOf2QualifiersItems0

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("category", required)
- `categories` (list of string, required)

### DefinitionItemsItemsOneOf2QualifiersItems1

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("number", required)
- `min` (double, optional)
- `max` (double, optional)

### DefinitionItemsItemsOneOf3QualifiersItems0

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("category", required)
- `categories` (list of string, required)

### DefinitionItemsItemsOneOf3QualifiersItems1

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("number", required)
- `min` (double, optional)
- `max` (double, optional)

### DefinitionItemsItemsOneOf4QualifiersItems0

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("category", required)
- `categories` (list of string, required)

### DefinitionItemsItemsOneOf4QualifiersItems1

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("number", required)
- `min` (double, optional)
- `max` (double, optional)

### DefinitionItemsItemsOneOf5QualifiersItems0

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("category", required)
- `categories` (list of string, required)

### DefinitionItemsItemsOneOf5QualifiersItems1

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("number", required)
- `min` (double, optional)
- `max` (double, optional)

### DefinitionItemsItemsOneOf6QualifiersItems0

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("category", required)
- `categories` (list of string, required)

### DefinitionItemsItemsOneOf6QualifiersItems1

- `key` (string, required) — Identifier for every section, item, role, level, qualifier and declarer: a lowercase letter, then lowercase letters, digits or underscores, at most 64 characters
- `value_type` ("number", required)
- `min` (double, optional)
- `max` (double, optional)

## Examples

### Example 1

**Request**

```json
{
  "kind": "assessment",
  "name": "string",
  "roles": [
    {
      "key": "string",
      "min": 1,
      "max": 1
    }
  ],
  "sections": [
    {
      "key": "string",
      "label": "string",
      "order": 1
    }
  ],
  "items": [
    {
      "key": "string",
      "label": "string",
      "scale": {
        "max": 1.1,
        "min": 1.1
      },
      "section": "string",
      "value_type": "string"
    }
  ]
}
```

**Response**

```json
{
  "key": "string",
  "version": "string",
  "declarer": "string",
  "scope": "string",
  "env": "test",
  "status": "string",
  "supersedes": "string",
  "line": "string",
  "compatible": true,
  "reasons": [
    "string"
  ],
  "hash": "string"
}
```

**SDK Code**

```python
import requests

url = "https://apps.ediphai.com/v1/definitions/key/versions/version"

payload = {
    "kind": "assessment",
    "name": "string",
    "roles": [
        {
            "key": "string",
            "min": 1,
            "max": 1
        }
    ],
    "sections": [
        {
            "key": "string",
            "label": "string",
            "order": 1
        }
    ],
    "items": [
        {
            "key": "string",
            "label": "string",
            "scale": {
                "max": 1.1,
                "min": 1.1
            },
            "section": "string",
            "value_type": "string"
        }
    ]
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://apps.ediphai.com/v1/definitions/key/versions/version';
const options = {
  method: 'PUT',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"kind":"assessment","name":"string","roles":[{"key":"string","min":1,"max":1}],"sections":[{"key":"string","label":"string","order":1}],"items":[{"key":"string","label":"string","scale":{"max":1.1,"min":1.1},"section":"string","value_type":"string"}]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://apps.ediphai.com/v1/definitions/key/versions/version"

	payload := strings.NewReader("{\n  \"kind\": \"assessment\",\n  \"name\": \"string\",\n  \"roles\": [\n    {\n      \"key\": \"string\",\n      \"min\": 1,\n      \"max\": 1\n    }\n  ],\n  \"sections\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"order\": 1\n    }\n  ],\n  \"items\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"scale\": {\n        \"max\": 1.1,\n        \"min\": 1.1\n      },\n      \"section\": \"string\",\n      \"value_type\": \"string\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://apps.ediphai.com/v1/definitions/key/versions/version")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"kind\": \"assessment\",\n  \"name\": \"string\",\n  \"roles\": [\n    {\n      \"key\": \"string\",\n      \"min\": 1,\n      \"max\": 1\n    }\n  ],\n  \"sections\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"order\": 1\n    }\n  ],\n  \"items\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"scale\": {\n        \"max\": 1.1,\n        \"min\": 1.1\n      },\n      \"section\": \"string\",\n      \"value_type\": \"string\"\n    }\n  ]\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.put("https://apps.ediphai.com/v1/definitions/key/versions/version")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"kind\": \"assessment\",\n  \"name\": \"string\",\n  \"roles\": [\n    {\n      \"key\": \"string\",\n      \"min\": 1,\n      \"max\": 1\n    }\n  ],\n  \"sections\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"order\": 1\n    }\n  ],\n  \"items\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"scale\": {\n        \"max\": 1.1,\n        \"min\": 1.1\n      },\n      \"section\": \"string\",\n      \"value_type\": \"string\"\n    }\n  ]\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://apps.ediphai.com/v1/definitions/key/versions/version', [
  'body' => '{
  "kind": "assessment",
  "name": "string",
  "roles": [
    {
      "key": "string",
      "min": 1,
      "max": 1
    }
  ],
  "sections": [
    {
      "key": "string",
      "label": "string",
      "order": 1
    }
  ],
  "items": [
    {
      "key": "string",
      "label": "string",
      "scale": {
        "max": 1.1,
        "min": 1.1
      },
      "section": "string",
      "value_type": "string"
    }
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://apps.ediphai.com/v1/definitions/key/versions/version");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"kind\": \"assessment\",\n  \"name\": \"string\",\n  \"roles\": [\n    {\n      \"key\": \"string\",\n      \"min\": 1,\n      \"max\": 1\n    }\n  ],\n  \"sections\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"order\": 1\n    }\n  ],\n  \"items\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"scale\": {\n        \"max\": 1.1,\n        \"min\": 1.1\n      },\n      \"section\": \"string\",\n      \"value_type\": \"string\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "kind": "assessment",
  "name": "string",
  "roles": [
    [
      "key": "string",
      "min": 1,
      "max": 1
    ]
  ],
  "sections": [
    [
      "key": "string",
      "label": "string",
      "order": 1
    ]
  ],
  "items": [
    [
      "key": "string",
      "label": "string",
      "scale": [
        "max": 1.1,
        "min": 1.1
      ],
      "section": "string",
      "value_type": "string"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://apps.ediphai.com/v1/definitions/key/versions/version")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Example 2

**Request**

```json
{
  "kind": "assessment",
  "name": "string",
  "roles": [
    {
      "key": "string",
      "min": 1,
      "max": 1
    }
  ],
  "sections": [
    {
      "key": "string",
      "label": "string",
      "order": 1
    }
  ],
  "items": [
    {
      "key": "string",
      "label": "string",
      "scale": {
        "max": 1.1,
        "min": 1.1
      },
      "section": "string",
      "value_type": "string"
    }
  ]
}
```

**Response**

```json
{
  "key": "string",
  "version": "string",
  "declarer": "string",
  "scope": "string",
  "env": "test",
  "status": "string",
  "supersedes": "string",
  "line": "string",
  "compatible": true,
  "reasons": [
    "string"
  ],
  "hash": "string"
}
```

**SDK Code**

```python
import requests

url = "https://apps.ediphai.com/v1/definitions/key/versions/version"

payload = {
    "kind": "assessment",
    "name": "string",
    "roles": [
        {
            "key": "string",
            "min": 1,
            "max": 1
        }
    ],
    "sections": [
        {
            "key": "string",
            "label": "string",
            "order": 1
        }
    ],
    "items": [
        {
            "key": "string",
            "label": "string",
            "scale": {
                "max": 1.1,
                "min": 1.1
            },
            "section": "string",
            "value_type": "string"
        }
    ]
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://apps.ediphai.com/v1/definitions/key/versions/version';
const options = {
  method: 'PUT',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"kind":"assessment","name":"string","roles":[{"key":"string","min":1,"max":1}],"sections":[{"key":"string","label":"string","order":1}],"items":[{"key":"string","label":"string","scale":{"max":1.1,"min":1.1},"section":"string","value_type":"string"}]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://apps.ediphai.com/v1/definitions/key/versions/version"

	payload := strings.NewReader("{\n  \"kind\": \"assessment\",\n  \"name\": \"string\",\n  \"roles\": [\n    {\n      \"key\": \"string\",\n      \"min\": 1,\n      \"max\": 1\n    }\n  ],\n  \"sections\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"order\": 1\n    }\n  ],\n  \"items\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"scale\": {\n        \"max\": 1.1,\n        \"min\": 1.1\n      },\n      \"section\": \"string\",\n      \"value_type\": \"string\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://apps.ediphai.com/v1/definitions/key/versions/version")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"kind\": \"assessment\",\n  \"name\": \"string\",\n  \"roles\": [\n    {\n      \"key\": \"string\",\n      \"min\": 1,\n      \"max\": 1\n    }\n  ],\n  \"sections\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"order\": 1\n    }\n  ],\n  \"items\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"scale\": {\n        \"max\": 1.1,\n        \"min\": 1.1\n      },\n      \"section\": \"string\",\n      \"value_type\": \"string\"\n    }\n  ]\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.put("https://apps.ediphai.com/v1/definitions/key/versions/version")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"kind\": \"assessment\",\n  \"name\": \"string\",\n  \"roles\": [\n    {\n      \"key\": \"string\",\n      \"min\": 1,\n      \"max\": 1\n    }\n  ],\n  \"sections\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"order\": 1\n    }\n  ],\n  \"items\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"scale\": {\n        \"max\": 1.1,\n        \"min\": 1.1\n      },\n      \"section\": \"string\",\n      \"value_type\": \"string\"\n    }\n  ]\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://apps.ediphai.com/v1/definitions/key/versions/version', [
  'body' => '{
  "kind": "assessment",
  "name": "string",
  "roles": [
    {
      "key": "string",
      "min": 1,
      "max": 1
    }
  ],
  "sections": [
    {
      "key": "string",
      "label": "string",
      "order": 1
    }
  ],
  "items": [
    {
      "key": "string",
      "label": "string",
      "scale": {
        "max": 1.1,
        "min": 1.1
      },
      "section": "string",
      "value_type": "string"
    }
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://apps.ediphai.com/v1/definitions/key/versions/version");
var request = new RestRequest(Method.PUT);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"kind\": \"assessment\",\n  \"name\": \"string\",\n  \"roles\": [\n    {\n      \"key\": \"string\",\n      \"min\": 1,\n      \"max\": 1\n    }\n  ],\n  \"sections\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"order\": 1\n    }\n  ],\n  \"items\": [\n    {\n      \"key\": \"string\",\n      \"label\": \"string\",\n      \"scale\": {\n        \"max\": 1.1,\n        \"min\": 1.1\n      },\n      \"section\": \"string\",\n      \"value_type\": \"string\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "kind": "assessment",
  "name": "string",
  "roles": [
    [
      "key": "string",
      "min": 1,
      "max": 1
    ]
  ],
  "sections": [
    [
      "key": "string",
      "label": "string",
      "order": 1
    ]
  ],
  "items": [
    [
      "key": "string",
      "label": "string",
      "scale": [
        "max": 1.1,
        "min": 1.1
      ],
      "section": "string",
      "value_type": "string"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://apps.ediphai.com/v1/definitions/key/versions/version")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```