PUT 
/blueprint/{blueprint_id}
Overview
Update an existing blueprint.
The body of the request should contain the updated blueprint document in JSON format.
Optionally, a conditional update of the blueprint can be perfomed by including the If-Match HTTP header with the same ETag value as provided by the “Retrieve blueprint” API. If the blueprint has been modified since the retrieval, the update is rejected with a 412 Resource out of date response. If the update succeeds, the new ETag is returned.
Response
Forbidden, insufficient privileges
Code Example
curl --location --request PUT 'https://api.cloudcraft.co/blueprint/{blueprint_id}' \
--data '{"data": "%!s(<nil>)",
}'
package main
import (
	"context"
	"log"
	"os"
	"github.com/DataDog/cloudcraft-go"
)
func main() {
	// Get the API key from the environment.
	key, ok := os.LookupEnv("CLOUDCRAFT_API_KEY")
	if !ok {
		log.Fatal("missing env var: CLOUDCRAFT_API_KEY")
	}
	// Check if the command line arguments are correct.
	if len(os.Args) != 3 {
		log.Fatalf("usage: %s <blueprint-id> <blueprint-name>", os.Args[0])
	}
	// Create new Config to initialize a Client.
	cfg := cloudcraft.NewConfig(key)
	// Create a new Client instance with the given Config.
	client, err := cloudcraft.NewClient(cfg)
	if err != nil {
		log.Fatal(err)
	}
	// Update the blueprint with the ID and name coming from command line
	// arguments. Add a new EC2 node to the blueprint.
	_, err = client.Blueprint.Update(
		context.Background(),
		&cloudcraft.Blueprint{
			ID:   os.Args[1],
			Name: os.Args[2],
			Data: &cloudcraft.BlueprintData{
				Name: os.Args[2],
				Nodes: []map[string]any{
					{
						"id":           "98172baa-a059-4b04-832d-8a7f5d14b595",
						"type":         "ec2",
						"region":       "us-east-1",
						"platform":     "linux",
						"instanceType": "m5",
						"instanceSize": "large",
					},
				},
			},
		},
		"",
	)
	if err != nil {
		log.Fatal(err)
	}
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n    \"name\": \"My updated AWS Account\",\n    \"roleArn\": \"arn:aws:iam::1234567890:role/cloudcraft\"\n}\n");
Request request = new Request.Builder()
  .url("https://api.cloudcraft.co/blueprint/{blueprint_id}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();
from cloudcraftco import Cloudcraft
cloudcraft = Cloudcraft()
blueprint_id = 1234
data = {
    "data": {
        "grid": "standard",
        "name": "Updated blueprint",
        "text": [
            {
                "id": "label1",
                "text": "Hello\nWorld!",
                "type": "isotext",
                "color": "#f5b720",
                "mapPos": [0, 0],
                "textSize": 15,
            }
        ],
    }
}
result = cloudcraft.update_blueprint(blueprint_id, data)
require "uri"
require "net/http"
url = URI("https://api.cloudcraft.co/blueprint/{blueprint_id}")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request.body = "{\n    \"name\": \"My updated AWS Account\",\n    \"roleArn\": \"arn:aws:iam::1234567890:role/cloudcraft\"\n}\n"
response = https.request(request)
puts response.read_body
var raw = "{\n    \"name\": \"My updated AWS Account\",\n    \"roleArn\": \"arn:aws:iam::1234567890:role/cloudcraft\"\n}\n";
var requestOptions = {
  method: 'PUT',
  body: raw,
  redirect: 'follow'
};
fetch("https://api.cloudcraft.co/blueprint/{blueprint_id}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));