Update Access Token
curl --request PUT \
--url https://api-dev.narrative.io/access-tokens/tokens/{access_token_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My Token",
"permissions": [
{
"access": "read",
"resource": "datasets"
},
{
"access": "write",
"resource": "datasets"
}
]
}
'import requests
url = "https://api-dev.narrative.io/access-tokens/tokens/{access_token_id}"
payload = {
"name": "My Token",
"permissions": [
{
"access": "read",
"resource": "datasets"
},
{
"access": "write",
"resource": "datasets"
}
]
}
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({
name: 'My Token',
permissions: [
{access: 'read', resource: 'datasets'},
{access: 'write', resource: 'datasets'}
]
})
};
fetch('https://api-dev.narrative.io/access-tokens/tokens/{access_token_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/access-tokens/tokens/{access_token_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([
'name' => 'My Token',
'permissions' => [
[
'access' => 'read',
'resource' => 'datasets'
],
[
'access' => 'write',
'resource' => 'datasets'
]
]
]),
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/access-tokens/tokens/{access_token_id}"
payload := strings.NewReader("{\n \"name\": \"My Token\",\n \"permissions\": [\n {\n \"access\": \"read\",\n \"resource\": \"datasets\"\n },\n {\n \"access\": \"write\",\n \"resource\": \"datasets\"\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(string(body))
}HttpResponse<String> response = Unirest.put("https://api-dev.narrative.io/access-tokens/tokens/{access_token_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My Token\",\n \"permissions\": [\n {\n \"access\": \"read\",\n \"resource\": \"datasets\"\n },\n {\n \"access\": \"write\",\n \"resource\": \"datasets\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.narrative.io/access-tokens/tokens/{access_token_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 \"name\": \"My Token\",\n \"permissions\": [\n {\n \"access\": \"read\",\n \"resource\": \"datasets\"\n },\n {\n \"access\": \"write\",\n \"resource\": \"datasets\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"expires_at": "2027-10-31T11:19:13.400498Z",
"id": "546c65d6-e589-4d3c-b1fe-7e61711cc418",
"name": "My Token",
"permissions": [
{
"access": "read",
"resource": "datasets"
},
{
"access": "write",
"resource": "datasets"
}
]
}{
"error": "<string>",
"error_description": "<string>"
}{
"error": "<string>",
"error_description": "<string>"
}{
"error": "<string>",
"error_description": "<string>"
}{
"error": "<string>",
"error_description": "<string>"
}Access Tokens
Update Access Token
Changes a System Access Token’s name, permissions or expiry. A field that is left out keeps its value. A request that sets no field, or sets each to the value it has, changes nothing and returns the token.
The token keeps its credential, which works with the new permissions and expiry. The response doesn’t contain the credential.
Requires write access to access_tokens.
PUT
/
access-tokens
/
tokens
/
{access_token_id}
Update Access Token
curl --request PUT \
--url https://api-dev.narrative.io/access-tokens/tokens/{access_token_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My Token",
"permissions": [
{
"access": "read",
"resource": "datasets"
},
{
"access": "write",
"resource": "datasets"
}
]
}
'import requests
url = "https://api-dev.narrative.io/access-tokens/tokens/{access_token_id}"
payload = {
"name": "My Token",
"permissions": [
{
"access": "read",
"resource": "datasets"
},
{
"access": "write",
"resource": "datasets"
}
]
}
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({
name: 'My Token',
permissions: [
{access: 'read', resource: 'datasets'},
{access: 'write', resource: 'datasets'}
]
})
};
fetch('https://api-dev.narrative.io/access-tokens/tokens/{access_token_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/access-tokens/tokens/{access_token_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([
'name' => 'My Token',
'permissions' => [
[
'access' => 'read',
'resource' => 'datasets'
],
[
'access' => 'write',
'resource' => 'datasets'
]
]
]),
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/access-tokens/tokens/{access_token_id}"
payload := strings.NewReader("{\n \"name\": \"My Token\",\n \"permissions\": [\n {\n \"access\": \"read\",\n \"resource\": \"datasets\"\n },\n {\n \"access\": \"write\",\n \"resource\": \"datasets\"\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(string(body))
}HttpResponse<String> response = Unirest.put("https://api-dev.narrative.io/access-tokens/tokens/{access_token_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My Token\",\n \"permissions\": [\n {\n \"access\": \"read\",\n \"resource\": \"datasets\"\n },\n {\n \"access\": \"write\",\n \"resource\": \"datasets\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.narrative.io/access-tokens/tokens/{access_token_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 \"name\": \"My Token\",\n \"permissions\": [\n {\n \"access\": \"read\",\n \"resource\": \"datasets\"\n },\n {\n \"access\": \"write\",\n \"resource\": \"datasets\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"expires_at": "2027-10-31T11:19:13.400498Z",
"id": "546c65d6-e589-4d3c-b1fe-7e61711cc418",
"name": "My Token",
"permissions": [
{
"access": "read",
"resource": "datasets"
},
{
"access": "write",
"resource": "datasets"
}
]
}{
"error": "<string>",
"error_description": "<string>"
}{
"error": "<string>",
"error_description": "<string>"
}{
"error": "<string>",
"error_description": "<string>"
}{
"error": "<string>",
"error_description": "<string>"
}Authorizations
Path Parameters
Body
application/json
A field that is left out keeps its value. A request that sets no field changes nothing.
Response
UpdateAccessToken 200 response
Everything about a System Access Token except its credential.

