curl --request PUT \
--url https://api-dev.narrative.io/encryption-materials/{encryption_material_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"collaborators": {
"encode": {
"type": "inclusion",
"company_ids": [
1,
2,
4
]
}
},
"description": "Some kind of description",
"display_name": "My encryption material",
"tags": [
"use-case-1"
]
}
'import requests
url = "https://api-dev.narrative.io/encryption-materials/{encryption_material_id}"
payload = {
"collaborators": { "encode": {
"type": "inclusion",
"company_ids": [1, 2, 4]
} },
"description": "Some kind of description",
"display_name": "My encryption material",
"tags": ["use-case-1"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
collaborators: {encode: {type: 'inclusion', company_ids: [1, 2, 4]}},
description: 'Some kind of description',
display_name: 'My encryption material',
tags: ['use-case-1']
})
};
fetch('https://api-dev.narrative.io/encryption-materials/{encryption_material_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-dev.narrative.io/encryption-materials/{encryption_material_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'collaborators' => [
'encode' => [
'type' => 'inclusion',
'company_ids' => [
1,
2,
4
]
]
],
'description' => 'Some kind of description',
'display_name' => 'My encryption material',
'tags' => [
'use-case-1'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-dev.narrative.io/encryption-materials/{encryption_material_id}"
payload := strings.NewReader("{\n \"collaborators\": {\n \"encode\": {\n \"type\": \"inclusion\",\n \"company_ids\": [\n 1,\n 2,\n 4\n ]\n }\n },\n \"description\": \"Some kind of description\",\n \"display_name\": \"My encryption material\",\n \"tags\": [\n \"use-case-1\"\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(string(body))
}HttpResponse<String> response = Unirest.put("https://api-dev.narrative.io/encryption-materials/{encryption_material_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"collaborators\": {\n \"encode\": {\n \"type\": \"inclusion\",\n \"company_ids\": [\n 1,\n 2,\n 4\n ]\n }\n },\n \"description\": \"Some kind of description\",\n \"display_name\": \"My encryption material\",\n \"tags\": [\n \"use-case-1\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.narrative.io/encryption-materials/{encryption_material_id}")
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 \"collaborators\": {\n \"encode\": {\n \"type\": \"inclusion\",\n \"company_ids\": [\n 1,\n 2,\n 4\n ]\n }\n },\n \"description\": \"Some kind of description\",\n \"display_name\": \"My encryption material\",\n \"tags\": [\n \"use-case-1\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"type": "owned",
"id": "YGA7xw",
"collaborators": {
"encode": {
"type": "none"
}
},
"company_id": 1,
"created_at": "2025-04-15T21:18:07.731902Z",
"description": "Some kind of description",
"display_name": "My encryption material",
"tags": [
"use-case-1"
],
"updated_at": "2025-04-15T21:18:07.731902Z",
"updated_by": 1
}{
"error": "Unauthorized",
"error_description": "You are not authorized to use this endpoint."
}{
"error": "Unauthorized",
"error_description": "You are not authorized to use this endpoint."
}{
"error": "Unauthorized",
"error_description": "You are not authorized to use this endpoint."
}Not foundUpdate an encryption material
Replace the name, description, collaborators and, optionally, the tags of an encryption material your company owns. Fields you omit are not left alone: see the request body.
Requires write access to encryption_materials.
curl --request PUT \
--url https://api-dev.narrative.io/encryption-materials/{encryption_material_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"collaborators": {
"encode": {
"type": "inclusion",
"company_ids": [
1,
2,
4
]
}
},
"description": "Some kind of description",
"display_name": "My encryption material",
"tags": [
"use-case-1"
]
}
'import requests
url = "https://api-dev.narrative.io/encryption-materials/{encryption_material_id}"
payload = {
"collaborators": { "encode": {
"type": "inclusion",
"company_ids": [1, 2, 4]
} },
"description": "Some kind of description",
"display_name": "My encryption material",
"tags": ["use-case-1"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
collaborators: {encode: {type: 'inclusion', company_ids: [1, 2, 4]}},
description: 'Some kind of description',
display_name: 'My encryption material',
tags: ['use-case-1']
})
};
fetch('https://api-dev.narrative.io/encryption-materials/{encryption_material_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-dev.narrative.io/encryption-materials/{encryption_material_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'collaborators' => [
'encode' => [
'type' => 'inclusion',
'company_ids' => [
1,
2,
4
]
]
],
'description' => 'Some kind of description',
'display_name' => 'My encryption material',
'tags' => [
'use-case-1'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-dev.narrative.io/encryption-materials/{encryption_material_id}"
payload := strings.NewReader("{\n \"collaborators\": {\n \"encode\": {\n \"type\": \"inclusion\",\n \"company_ids\": [\n 1,\n 2,\n 4\n ]\n }\n },\n \"description\": \"Some kind of description\",\n \"display_name\": \"My encryption material\",\n \"tags\": [\n \"use-case-1\"\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(string(body))
}HttpResponse<String> response = Unirest.put("https://api-dev.narrative.io/encryption-materials/{encryption_material_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"collaborators\": {\n \"encode\": {\n \"type\": \"inclusion\",\n \"company_ids\": [\n 1,\n 2,\n 4\n ]\n }\n },\n \"description\": \"Some kind of description\",\n \"display_name\": \"My encryption material\",\n \"tags\": [\n \"use-case-1\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.narrative.io/encryption-materials/{encryption_material_id}")
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 \"collaborators\": {\n \"encode\": {\n \"type\": \"inclusion\",\n \"company_ids\": [\n 1,\n 2,\n 4\n ]\n }\n },\n \"description\": \"Some kind of description\",\n \"display_name\": \"My encryption material\",\n \"tags\": [\n \"use-case-1\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"type": "owned",
"id": "YGA7xw",
"collaborators": {
"encode": {
"type": "none"
}
},
"company_id": 1,
"created_at": "2025-04-15T21:18:07.731902Z",
"description": "Some kind of description",
"display_name": "My encryption material",
"tags": [
"use-case-1"
],
"updated_at": "2025-04-15T21:18:07.731902Z",
"updated_by": 1
}{
"error": "Unauthorized",
"error_description": "You are not authorized to use this endpoint."
}{
"error": "Unauthorized",
"error_description": "You are not authorized to use this endpoint."
}{
"error": "Unauthorized",
"error_description": "You are not authorized to use this endpoint."
}Not foundAuthorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Unique identifier for an encryption material The id of the encryption material. Six characters of URL-safe base64.
"YGA7xw"
Body
Replaces the encryption material's name, description and collaborators. Omitting description clears it, and
omitting collaborators stops sharing the material with anyone. Omitting tags leaves the tags as they are.
The name of the encryption material. Must not be blank, and must be shorter than 1024 characters.
1 - 1023"My encryption material"
Which other companies can use the encryption material.
Show child attributes
Show child attributes
{
"encode": {
"type": "inclusion",
"company_ids": [1, 2, 4]
}
}
Must not be blank, and must be shorter than 8192 characters.
1 - 8191"Some kind of description"
Replaces the tags. Must not be empty when present.
11Response
OK
owned The id of the encryption material. Six characters of URL-safe base64.
"YGA7xw"
Which other companies can use the encryption material.
Show child attributes
Show child attributes
{
"encode": {
"type": "inclusion",
"company_ids": [1, 2, 4]
}
}
The id of an existing company
345
The name of the encryption material. Must not be blank, and must be shorter than 1024 characters.
1 - 1023"My encryption material"
1The id of an existing user
20
Must not be blank, and must be shorter than 8192 characters.
1 - 8191"Some kind of description"
Was this page helpful?

