Export budget for a blueprint

GET  /blueprint/{blueprint_id}/budget/{format}

Overview

Export the budget for a blueprint in CSV or XLSX format.

Path Parameters

  • blueprint_id: UUID. Blueprint ID
  • format: String. One of “csv” or “xlsx”.

Optional query parameters

  • currency: String. Currency in ISO_4217 format. Should be one of “USD”, “AUD”, “CHF”, “CKK”, “EUR”, “GBP”, “HKD”, “JPY”, “NOK”, “NZD”, “SEK”, or “ZAR”. Defaults to “USD”.
  • period: String. Period for budget. Should be one of “h” (hourly), “d” (daily), “w” (weekly), “m” (monthly), or “y” (yearly). Defaults to “m”.
  • rate: String. Should be one of “effective” (includes upfront fees) or “stated” (excludes upfront fees). Defaults to “effective”.

Response

OK

Unauthorized

Forbidden, insufficient privileges

Blueprint not found

Code Example

curl --location 'https://api.cloudcraft.co/blueprint/{blueprint_id}/budget/{format}'
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) != 2 {
		log.Fatalf("usage: %s <blueprint-id>", 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)
	}

	// Export the blueprint's budget with the given blueprint-id coming from a
	// command line argument.
	budget, _, err := client.Blueprint.ExportBudget(
		context.Background(),
		os.Args[1],
		"csv",
		&cloudcraft.BudgetExportParams{
			Currency: "USD",
			Period:   "month",
			Rate:     "monthly",
		},
	)
	if err != nil {
		log.Fatal(err)
	}

	// Save the budget to a file.
	if err := os.WriteFile("blueprint.csv", budget, 0o600); err != nil {
		log.Fatal(err)
	}
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://api.cloudcraft.co/blueprint/{blueprint_id}/budget/{format}")
  .method("GET", body)
  .build();
Response response = client.newCall(request).execute();
from cloudcraftco import Cloudcraft

cloudcraft = Cloudcraft()

blueprint_id = 1234
bp_format = "csv"
export = cloudcraft.export_blueprint_budget(blueprint_id, bp_format)
with open(f'export.{bp_format}', "wb") as binary_file:
    binary_file.write(export)
require "uri"
require "net/http"

url = URI("https://api.cloudcraft.co/blueprint/{blueprint_id}/budget/{format}")

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

request = Net::HTTP::Get.new(url)

response = https.request(request)
puts response.read_body
var requestOptions = {
  method: 'GET',
  redirect: 'follow'
};

fetch("https://api.cloudcraft.co/blueprint/{blueprint_id}/budget/{format}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));