curl --request PUT \
--url https://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"metadata": {
"name": "new-name",
"description": "A verbose description",
"tags": [
{
"name": "tag-name",
"value": "tag-value"
}
]
},
"spec": {
"identityPolicies": [
{
"name": "bucket-readonly",
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::example-bucket"
]
}
]
}
}
]
}
}
'import requests
url = "https://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}"
payload = {
"metadata": {
"name": "new-name",
"description": "A verbose description",
"tags": [
{
"name": "tag-name",
"value": "tag-value"
}
]
},
"spec": { "identityPolicies": [
{
"name": "bucket-readonly",
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::example-bucket"]
}
]
}
}
] }
}
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({
metadata: {
name: 'new-name',
description: 'A verbose description',
tags: [{name: 'tag-name', value: 'tag-value'}]
},
spec: {
identityPolicies: [
{
name: 'bucket-readonly',
document: {
Version: '2012-10-17',
Statement: [
{
Effect: 'Allow',
Action: ['s3:ListBucket'],
Resource: ['arn:aws:s3:::example-bucket']
}
]
}
}
]
}
})
};
fetch('https://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}', 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://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}",
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([
'metadata' => [
'name' => 'new-name',
'description' => 'A verbose description',
'tags' => [
[
'name' => 'tag-name',
'value' => 'tag-value'
]
]
],
'spec' => [
'identityPolicies' => [
[
'name' => 'bucket-readonly',
'document' => [
'Version' => '2012-10-17',
'Statement' => [
[
'Effect' => 'Allow',
'Action' => [
's3:ListBucket'
],
'Resource' => [
'arn:aws:s3:::example-bucket'
]
]
]
]
]
]
]
]),
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://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}"
payload := strings.NewReader("{\n \"metadata\": {\n \"name\": \"new-name\",\n \"description\": \"A verbose description\",\n \"tags\": [\n {\n \"name\": \"tag-name\",\n \"value\": \"tag-value\"\n }\n ]\n },\n \"spec\": {\n \"identityPolicies\": [\n {\n \"name\": \"bucket-readonly\",\n \"document\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:ListBucket\"\n ],\n \"Resource\": [\n \"arn:aws:s3:::example-bucket\"\n ]\n }\n ]\n }\n }\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://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"metadata\": {\n \"name\": \"new-name\",\n \"description\": \"A verbose description\",\n \"tags\": [\n {\n \"name\": \"tag-name\",\n \"value\": \"tag-value\"\n }\n ]\n },\n \"spec\": {\n \"identityPolicies\": [\n {\n \"name\": \"bucket-readonly\",\n \"document\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:ListBucket\"\n ],\n \"Resource\": [\n \"arn:aws:s3:::example-bucket\"\n ]\n }\n ]\n }\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}")
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 \"metadata\": {\n \"name\": \"new-name\",\n \"description\": \"A verbose description\",\n \"tags\": [\n {\n \"name\": \"tag-name\",\n \"value\": \"tag-value\"\n }\n ]\n },\n \"spec\": {\n \"identityPolicies\": [\n {\n \"name\": \"bucket-readonly\",\n \"document\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:ListBucket\"\n ],\n \"Resource\": [\n \"arn:aws:s3:::example-bucket\"\n ]\n }\n ]\n }\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"id": "a64f9269-36e0-4312-b8d1-52d93d569b7b",
"name": "my-s3-endpoint",
"organizationId": "9a8c6370-4065-4d4a-9da0-7678df40cd9d",
"projectId": "e36c058a-8eba-4f5b-91f4-f6ffb983795c",
"creationTime": "2024-05-31T14:11:00Z",
"createdBy": "john.doe@acme.com",
"provisioningStatus": "provisioned",
"healthStatus": "healthy",
"tags": [
{
"name": "tag-name",
"value": "tag-value"
}
]
},
"spec": {
"objectStorageEndpointClassId": "7b6f8b33-3ca8-4db2-b7ab-7bbf683efc6d",
"identityPolicies": [
{
"name": "bucket-admin",
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::example-bucket",
"arn:aws:s3:::example-bucket/*"
]
}
]
}
}
]
},
"status": {
"regionId": "ba39bff5-b0d8-4c60-89e5-ed1104356b4a",
"exposure": {
"public": {
"dnsName": "s3.example.com"
}
}
}
}{
"error": "invalid_request",
"error_description": "request body invalid",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "access_denied",
"error_description": "authentication failed",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "forbidden",
"error_description": "user credentials do not have the required privileges",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "not_found",
"error_description": "the requested resource does not exist",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "conflict",
"error_description": "a resource with the same name already exists",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "unprocessable_content",
"error_description": "the request body was in the wrong format",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "server_error",
"error_description": "failed to token claim",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}Update endpoint
Updates the endpoint metadata and, optionally, replaces the full set of configured identity policies. The selected endpoint class remains immutable after creation.
curl --request PUT \
--url https://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"metadata": {
"name": "new-name",
"description": "A verbose description",
"tags": [
{
"name": "tag-name",
"value": "tag-value"
}
]
},
"spec": {
"identityPolicies": [
{
"name": "bucket-readonly",
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::example-bucket"
]
}
]
}
}
]
}
}
'import requests
url = "https://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}"
payload = {
"metadata": {
"name": "new-name",
"description": "A verbose description",
"tags": [
{
"name": "tag-name",
"value": "tag-value"
}
]
},
"spec": { "identityPolicies": [
{
"name": "bucket-readonly",
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::example-bucket"]
}
]
}
}
] }
}
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({
metadata: {
name: 'new-name',
description: 'A verbose description',
tags: [{name: 'tag-name', value: 'tag-value'}]
},
spec: {
identityPolicies: [
{
name: 'bucket-readonly',
document: {
Version: '2012-10-17',
Statement: [
{
Effect: 'Allow',
Action: ['s3:ListBucket'],
Resource: ['arn:aws:s3:::example-bucket']
}
]
}
}
]
}
})
};
fetch('https://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}', 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://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}",
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([
'metadata' => [
'name' => 'new-name',
'description' => 'A verbose description',
'tags' => [
[
'name' => 'tag-name',
'value' => 'tag-value'
]
]
],
'spec' => [
'identityPolicies' => [
[
'name' => 'bucket-readonly',
'document' => [
'Version' => '2012-10-17',
'Statement' => [
[
'Effect' => 'Allow',
'Action' => [
's3:ListBucket'
],
'Resource' => [
'arn:aws:s3:::example-bucket'
]
]
]
]
]
]
]
]),
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://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}"
payload := strings.NewReader("{\n \"metadata\": {\n \"name\": \"new-name\",\n \"description\": \"A verbose description\",\n \"tags\": [\n {\n \"name\": \"tag-name\",\n \"value\": \"tag-value\"\n }\n ]\n },\n \"spec\": {\n \"identityPolicies\": [\n {\n \"name\": \"bucket-readonly\",\n \"document\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:ListBucket\"\n ],\n \"Resource\": [\n \"arn:aws:s3:::example-bucket\"\n ]\n }\n ]\n }\n }\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://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"metadata\": {\n \"name\": \"new-name\",\n \"description\": \"A verbose description\",\n \"tags\": [\n {\n \"name\": \"tag-name\",\n \"value\": \"tag-value\"\n }\n ]\n },\n \"spec\": {\n \"identityPolicies\": [\n {\n \"name\": \"bucket-readonly\",\n \"document\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:ListBucket\"\n ],\n \"Resource\": [\n \"arn:aws:s3:::example-bucket\"\n ]\n }\n ]\n }\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://storage.nks.europe-west4.nscale.com/api/v1/objectstorageendpoints/{objectStorageEndpointID}")
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 \"metadata\": {\n \"name\": \"new-name\",\n \"description\": \"A verbose description\",\n \"tags\": [\n {\n \"name\": \"tag-name\",\n \"value\": \"tag-value\"\n }\n ]\n },\n \"spec\": {\n \"identityPolicies\": [\n {\n \"name\": \"bucket-readonly\",\n \"document\": {\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:ListBucket\"\n ],\n \"Resource\": [\n \"arn:aws:s3:::example-bucket\"\n ]\n }\n ]\n }\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"id": "a64f9269-36e0-4312-b8d1-52d93d569b7b",
"name": "my-s3-endpoint",
"organizationId": "9a8c6370-4065-4d4a-9da0-7678df40cd9d",
"projectId": "e36c058a-8eba-4f5b-91f4-f6ffb983795c",
"creationTime": "2024-05-31T14:11:00Z",
"createdBy": "john.doe@acme.com",
"provisioningStatus": "provisioned",
"healthStatus": "healthy",
"tags": [
{
"name": "tag-name",
"value": "tag-value"
}
]
},
"spec": {
"objectStorageEndpointClassId": "7b6f8b33-3ca8-4db2-b7ab-7bbf683efc6d",
"identityPolicies": [
{
"name": "bucket-admin",
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::example-bucket",
"arn:aws:s3:::example-bucket/*"
]
}
]
}
}
]
},
"status": {
"regionId": "ba39bff5-b0d8-4c60-89e5-ed1104356b4a",
"exposure": {
"public": {
"dnsName": "s3.example.com"
}
}
}
}{
"error": "invalid_request",
"error_description": "request body invalid",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "access_denied",
"error_description": "authentication failed",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "forbidden",
"error_description": "user credentials do not have the required privileges",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "not_found",
"error_description": "the requested resource does not exist",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "conflict",
"error_description": "a resource with the same name already exists",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "unprocessable_content",
"error_description": "the request body was in the wrong format",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}{
"error": "server_error",
"error_description": "failed to token claim",
"trace_id": "57bc14d9bd461f0b5a72db830149b67a"
}Authorizations
Operation requires OAuth 2.0 bearer token authentication.
Path Parameters
The object storage endpoint unique identifier. A Kubernetes name. Must be a valid DNS containing only lower case characters, numbers or hyphens, start and end with a character or number, and be at most 63 characters in length.
1 - 63Body
A request to update an object storage endpoint.
An object storage endpoint update request. The selected endpoint class is immutable, but the configured identity policies may be replaced as a full list.
Metadata required for all API resource reads and writes.
Show child attributes
Show child attributes
The mutable portion of an object storage endpoint specification. When identityPolicies is present in an update request, it replaces the full set of configured policies.
Show child attributes
Show child attributes
Response
An object storage endpoint.
An S3-compatible object storage endpoint that allows users to self-service create buckets through the access it exposes.
Was this page helpful?